[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. namez2

    namez2 New Member

    Joined:
    23 Aug 2010
    Messages:
    45
    Likes Received:
    1
    Reputations:
    0
    Повторюсь. Прошу помощи по как исправить ошибку авторизации вконтакте? заранее спасибо..
    PHP:
    <?php
    class Vkontakte{
        public  
    $cookies;
        
    //Конструктор класса
        //Для начала работы с контактом необходимо авторизоваться
        
    function __construct($login,$pass){
            
    //Проверяем наличие установленной библиотеки курл
            
    if(!function_exists('curl_init')){
                die(
    "Для работы необходимо установить lib_curl");
            }
            
    //Устанавливаем язык интерфейса
            
    $remixlang='0';

            
    //Отправляем логин и пароль
            
    $url 'http://login.vk.com/?act=login';
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_HEADER1);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
            
    curl_setopt($chCURLOPT_USERAGENT,"Opera/9.20 (Windows NT 5.1; U; ru)");
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_POSTFIELDS"email=".$login."&pass=".$pass."&expire=&vk=");
            
    curl_setopt($chCURLOPT_REFERER"http://vkontakte.com/index.php");
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION,1);
            
    //////////////////////////////////////////
            //Получаем необходимый результат
            
    $result curl_exec($ch);

            
    $str = new MyStr();

            
    //Вырезаем кукис
            
    $cookies $str->StGetCookiesFromHeader($result,";");
            
    //?act=login после получения логина и пароля отдает страницу с формой,
            //которая содержит сессию в скрытом поле, и редиректит на login.php. Он устанавливает
            //Куку remixsid. Вырежем куку

            
    $pattern "#name='s'.*value='(.*)'#U";
            
    preg_match($pattern,$result,$arr);
            
    $remixsid = @$arr[1];

            
    //И таскать будем все куки в переменной cookies
            
    $this->cookies .=$cookies."remixsid=".$remixsid.";remixlang=".$remixlang;
        }

        function 
    CheckAuth(){

            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL"http://vkontakte.ru/profile.php");
            
    curl_setopt($chCURLOPT_HEADER0);
            
    curl_setopt($chCURLOPT_COOKIE,$this->cookies);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
            
    curl_setopt($chCURLOPT_USERAGENT,"Opera/9.20 (Windows NT 5.1; U; ru)");
            
    $result curl_exec($ch);
            if(
    substr_count($result,"Моя Страница")>0){
                return 
    $result;
            }else{

                return 
    $result;
            }
        }
        function 
    ViewGroupPage($url){
            global 
    $cookies;
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_HEADER0);
            
    curl_setopt($chCURLOPT_COOKIE,$this->cookies);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
            
    $result curl_exec($ch);
            
    $patern "#Обсуждения\: <span>\((.*)\)<\/span>#i";
            if(
    preg_match($patern,$result,$arr)){
                echo 
    "В этой группе <b>".$arr[1]."</b> тем обсуждений<br>";
            }else{
                echo 
    "В данной группе нет обсуждений, либо вы не можете их просматривать";
                die();

            }



        }
        function 
    ParseDialogs($url,$msg_count,$offset "",$timeout=0){

            
    //echo $url;
            //echo $cookies;
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_HEADER0);
            
    curl_setopt($chCURLOPT_COOKIE,$this->cookies);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
            
    $result curl_exec($ch);
            
    $pattern_topic_title '#id="topic_title">(.*)<\/a>#U';
            
    preg_match($pattern_topic_title,$result,$arr_topic_title);
            
    $out['topic_title'] = $arr_topic_title[1];
            
    $patern '#<a href="topic-.*?offset=(.*)" onclick="return getPage\((.*)\)">&raquo;<\/a>#i';
            
    preg_match($patern,$result,$arr);
            
    //echo "Всего сообщений <b>".$arr[2]."</b><br>";
            
                
    $last_page $offset/20;

            for(
    $i=0;$i<=$last_page;$i++){
                
    $ch curl_init();
                
    curl_setopt($chCURLOPT_URL$url."?offset=".$i*20);
                
    curl_setopt($chCURLOPT_HEADER0);
                
    curl_setopt($chCURLOPT_COOKIE,$this->cookies);
                
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
                
    $result curl_exec($ch);
                
    $patern_post '#<div class="postMessage" id=".*" style=".*">(.*)<\/div>#U';
                
    preg_match_all($patern_post,$result,$arr_post);
                
    $patern_ts '#<span class="postAuthor"><a href="(.*)">(.*)<\/a><\/span>#i';
                
    preg_match_all($patern_ts,$result,$arr_ts);
                
    $patern_image_url '#<a href="id[0-9]+">
         <img src="(.*)" alt=""\/>
        </a>#i'
    ;
                
    $patern_timestamp '#<span class="timestamp">(.*)<\/span>#i';
                
    preg_match_all($patern_timestamp,$result,$arr_timestamp);
                
    preg_match_all($patern_image_url,$result,$arr_image_url);
                
    //print_r($arr[1]);
                
    $out['timestamp'][$i] = $arr_timestamp[1];
                
    $out['posts'][$i] = $arr_post[1];
                
    $out['author_nickname'][$i] = $arr_ts[2];
                
    $out['author_id'][$i] = $arr_ts[1];
                
    $out['image_url'][$i] = $arr_image_url[1];
    if(
    $timeout){
                        
    sleep($timeout);
                    }

            }
            return 
    $out;

            
    /*else{

            }*/
        
    }
    function 
    VkSendPostFields($url,$post_fields,$refer 'http://vkontakte.com/index.php'){
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_HEADER1);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
            
    curl_setopt($chCURLOPT_USERAGENT,"Opera/9.20 (Windows NT 5.1; U; ru)");
            
    curl_setopt($chCURLOPT_COOKIE,$this->cookies);
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_POSTFIELDS$post_fields);
            
    curl_setopt($chCURLOPT_REFERER$refer);
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION,1);
            
    $result curl_exec($ch);
            return 
    $result;
        }

        function 
    GetThemes($url,$themes_count){
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_HEADER0);
            
    curl_setopt($chCURLOPT_COOKIE,$this->cookies);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
            
    $result curl_exec($ch);
            
    $pattern '#<a href=".*\/board([0-9]*)">(.*)<\/a>#U';
            
    preg_match($pattern,$result,$arr);
            
            
    $board_link 'http://vkontakte.ru/board'.$arr[1];
            
    $group_id $arr[1];
            
    //$themes_count = intval($arr[2]);
            
            
    $loop_count floatval($themes_count/50);
            if(
    $loop_count%50>0){
                
    $loop_countintval($loop_count)+1;
            }
            for(
    $i=0;$i<$loop_count;$i++){
                
    $offset $i*50;
                
    $post_fields ='offset='.$offset.'&order=0';
                
    $url 'http://vkontakte.ru/board.php?act=a_get_topics_page&gid='.$group_id;
                
    $result $this->VkSendPostFields($url,$post_fields);
                
                
    //<h3 class=\"topicTitle\"><a href=\"topic-1622_11811924\">Nokia N76<\/a>
                
    $pattern '#<h3.*><a href=[\\\]"(.*)[\\\]">(.*)<[\\\]\/h3>#U';
                
    preg_match_all($pattern,$result,$arr);
                
    $out[] = $arr[1];
            }

            for(
    $i=0;$i<count($out);$i++){
                for(
    $a=0;$a<count($out[$i]);$a++){
                    
    $newout[]=$out[$i][$a];
                }

            }
            return 
    $newout;
        }


    }

    ?>
    причем по всей видимости ошибка в авторизации. ранее работало.
    после коммента// //Отправляем логин и пароль
     
    #17741 namez2, 25 Feb 2011
    Last edited: 25 Feb 2011
  2. IamAdmin

    IamAdmin New Member

    Joined:
    6 Aug 2009
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    существует ли целый тип больший int.
    нужно 10 цифр в 1 переменную целого типа занести
     
  3. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    PHP:
    $title 'Востановления пароля пользователю  для сайта Site.ru!';
    $header ="Content-type: text/plain; charset=\"utf-8\"";
    $header.="From:  [email protected]";
    $header.="Subject: $title";
    $header ="Content-type: text/plain; charset=\"utf-8\"";
    $letter 'Вы запросили восстановление пароля для аккаунта на сайте Site.ru \r\nВаш новый пароль: '.$roo.' уважением админестрация сайта Site.ru';




    if (
    mail($err$title$letter ,$header))
    {
    echo 
    "Пароль отправлен";
    }
    else
    {
    echo 
    "Пароль не отправлен, такова емейла не существует или вы ошиблись при вводе";
    }
    }
    }  
    не пишет в письме от кого и тему письма, почему?
     
  4. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    PHP:
    $title 'Востановления пароля пользователю  для сайта Site.ru!';
    $header ="Content-type: text/plain; charset=\"utf-8\"";
    $header.="From:  [email protected]";
    $header.="Subject: $title";
    $header .="Content-type: text/plain; charset=\"utf-8\"";
    $letter 'Вы запросили восстановление пароля для аккаунта на сайте Site.ru \r\nВаш новый пароль: '.$roo.' уважением админестрация сайта Site.ru';




    if (
    mail($err$title$letter ,$header))
    {
    echo 
    "Пароль отправлен";
    }
    else
    {
    echo 
    "Пароль не отправлен, такова емейла не существует или вы ошиблись при вводе";
    }
    }
    }  
    ты забыл в последнем $header добавить точку и потому все что ты раньше прописывал - заменялось на последнюю строчку.
     
  5. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    серовно не работает
     
  6. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    $headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n";

    Вот правильная постановка запроса
     
  7. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    нашел
     
    #17747 Nelz., 26 Feb 2011
    Last edited: 26 Feb 2011
  8. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Подскажите, где ошибка:

    PHP:
            if(isset($_POST['butsubmit'])){     
                include(
    "conf.php");
                
    $new_arr = array();
                
    $text explode("\n"$_POST['urls']);
                   for(
    $i=0$i<count($text); $i++){
                     
    array_push($new_arr$text[$i]);
                   }            
                for(
    $i2=0$i2 count($new_arr); $i2++){
                    
    $result mysql_query("SELECT * FROM `base` WHERE `url`='".$new_arr[$i2]."'");
                    
    $num_result mysql_num_rows($result);
                    if(
    $num_result!=0){                    
                        for (
    $i3 0$i3 $num_result$i3++) {
                            
    $row mysql_fetch_array($result);
                            
    $res.='<tr><td>'.($i3+1).'</td> <td>'.$new_arr[$i2].'</td> <td>'.$row["url"].'</td> <td><a href="../channel.php?ch='.$row["id"].'" target="_blank">'.$row["channel"].'</a></td></tr>';    

                        }
                        
                    }
                    if(
    $num_result==0){
                        
    $res2.=$new_arr[$i2]."\n";
                    }
                }            
            }
    почему то 1 раз находит в базе и всё. если забить 10 одинаковых строк, которые есть в базе, то $res показывает всё равно 1 строку, последнюю :( Помогите разобраться что к чему. Парсил массив $new_arr - там всё ок, разбивает по переносу строки. В цикле всё ок, авот с запросом что тоне то, как будто он один раз посылает запрос и всё :( HELP!!!!!!!!!!!! $
     
  9. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    mff в коде много ненужного + sql инъекция. Скорее всего ошибка тут: $text = explode("\n", $_POST['urls']);

    Возможно перенос строки у вас в виде \r\n. Следовательно все кроме последней строки будут с лишним символом
     
    _________________________
    1 person likes this.
  10. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Gifts большое вам спасибо! Всё заработало как часы. А как избавиться от скули?
     
  11. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    mysql_real_escape_string
     
  12. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75

    ага, понял, от кого пишет, не пишет тему письма
     
  13. Ifrit

    Ifrit New Member

    Joined:
    10 Feb 2011
    Messages:
    33
    Likes Received:
    3
    Reputations:
    5
    извините, что влезаю, но хотелось бы спросить:
    у вас с кодировкой utf-8 все нормально показывает?
    если да то извиняюсь, если проблемы все еще есть попробуйте вот так: изменена кодировка + пара незначительных поправок

    PHP:
    $title "Тема письма";  
    $header ="Content-type: text/html; charset=windows-1251 \r\n";  
    $header.="From:  [email protected]"\r\n";
    $letter ='Вы запросили восстановление пароля для аккаунта на сайте Site.ru<br> Ваш новый пароль: '.$roo.' с уважением администрация сайта Site.ru';  


    if (
    mail($err$title$letter ,$header))  
    {  
    echo 
    "Пароль отправлен";  
    }  
    else  
    {  
    echo 
    "Пароль не отправлен, такова емейла не существует или вы ошиблись при вводе";  
    }
     
  14. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    Moriarty, в вашем примере темы письма серовно нету,
    Ifrit, в вашем примере кодировеа превращяется в непонятные символы
     
  15. Ifrit

    Ifrit New Member

    Joined:
    10 Feb 2011
    Messages:
    33
    Likes Received:
    3
    Reputations:
    5
    а что у вас за почтовый клиент?
    в моем случае заголовок выходит?
    что именно в непонятной кодировке? Заголовок? Текст? или и то и другое?
     
  16. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    и то и другое. я на майле.ру



    Moriarty, всё проверил, всё правильно

    PHP:
    $header ="Content-type: text/plain; charset=\"utf-8\"" "\r\n";
    $header.="From:  [email protected]"\r\n";
    $letter 'Вы запросили восстановление пароля для аккаунта на сайте Site.ru Ваш новый пароль: '.$roo.' уважением админестрация сайта Site.ru';
    $title 'Тема письма';



    if (
    mail($err,$title  $letter ,$header))
    {
    echo 
    "Пароль отправлен";
    }
    else
    {
    echo 
    "Пароль не отправлен, такого емейла не существует или вы ошиблись при вводе";
    }
     
  17. Ifrit

    Ifrit New Member

    Joined:
    10 Feb 2011
    Messages:
    33
    Likes Received:
    3
    Reputations:
    5
    а вот так?
    PHP:
    $title "Тема письма";  
    $header ="Content-type: text/html; charset=utf-8 \r\n";  
    $header.="From:  [email protected]"\r\n";
    $letter ='Вы запросили восстановление пароля для аккаунта на сайте Site.ru<br> Ваш новый пароль: '.$roo.' с уважением администрация сайта Site.ru';  

    $title'=?koi8-r?B?'.base64_encode(convert_cyr_string($title"w","k")).'?=';

    if (
    mail($err$title$letter ,$header))  
    {  
    echo 
    "Пароль отправлен";  
    }  
    else  
    {
    echo 
    "Пароль не отправлен, такого емейла не существует или вы ошиблись при вводе";  
    }
    начинается перебор всех вариантов =)
     
    #17757 Ifrit, 26 Feb 2011
    Last edited: 26 Feb 2011
  18. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    есть у кого-нибудь код для прочтения последнего письма в почтовом ящике?
     
  19. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    так тема письма превращяется в Р Р.Р.Р. Р РёС.С.Р.Р.
     
  20. sheva

    sheva New Member

    Joined:
    26 Feb 2011
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Добрый вечер.
    Задача:
    надо получить данные из подгружаемой ajax'ом страницы.

    Если более конкретно,то надо получить данные из
    "http://vkontakte.ru/groups.php?act=people&gid=***#section=3"

    понятно что обычное
    не подойдёт -получим базовую страницу.


    Как я понимаю надо загрузить базовую страницу и отправить серверу необходимость подгрузить #section=3, тем самым получить необходимые данные.


    вопрос как это реализовать с помощью php?

    зы. ни где толковой информации об этом пока не нашёл.
     
Thread Status:
Not open for further replies.