CURL и мобильник

Discussion in 'PHP' started by DVMade, 20 Mar 2011.

  1. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Привет всем. Возникла такая проблема, значит составил я скрипт PHP с использованием CURL. Загнал его на моб сайта, ну обычный сайт просто с моб разметкой, вот на компе этот скрипт пашет а на мобильниках никуя. В чем причина не подскажете?! Как ег она мобе заставить пахать?
     
    1 person likes this.
  2. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    Может быть нарушены стандарты html. И, скажем, на компьютере Opera\FF\IE такое пропускают, а мобильный браузер - нет.
     
  3. bafoed

    bafoed Member

    Joined:
    14 Jul 2009
    Messages:
    88
    Likes Received:
    12
    Reputations:
    10
    CURL = PHP.
    PHP выполняется на сервере, независимо от браузера, слкдовательно проблема в верстке, отображении результата.
    попробуй с Operы Mini если есть возможность, посмотри что покажет она
     
  4. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Вот код скрипта
    PHP:
    <?
    ini_set('display_errors'1);

    function 
    post_content ($url,$postdata) {
      
    $uagent "Mozilla/4.0 (compatible; MSIE 6.0; Windows 
    NT 5.1; SV1; .NET CLR 1.1.4322)"
    ;

      
    $ch curl_init$url );
      
    curl_setopt($chCURLOPT_URL$url);
      
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
      
    curl_setopt($chCURLOPT_HEADER0);
      
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
      
    curl_setopt($chCURLOPT_ENCODING"");
      
    curl_setopt($chCURLOPT_USERAGENT$uagent);
      
    curl_setopt($chCURLOPT_TIMEOUT120);
      
    curl_setopt($chCURLOPT_FAILONERROR1);
      
    curl_setopt($chCURLOPT_AUTOREFERER1);
      
    curl_setopt($chCURLOPT_POST1);
      
    curl_setopt($chCURLOPT_POSTFIELDS$postdata);

      
    $content curl_exec$ch );
      
    $err     curl_errno$ch );
      
    $errmsg  curl_error$ch );
      
    $header  curl_getinfo$ch );
      
    curl_close$ch );

      
    $header['errno']   = $err;
      
    $header['errmsg']  = $errmsg;
      
    $header['content'] = $content;
      return 
    $header;
    }

    //Авторизовываемся
      
    $url 'http://qchat.su:2222';
      
    $username 'DVMade';
      
    $userpass '****';
      
    $sysname 'glamur';
      
    $ip '/'.$_SERVER['REMOTE_ADDR'];
      
    $postdata 'page=login&ip='.$ip.'&name='.$username.'&password='.$userpass;
      
    $result post_content$url$postdata );
      
    $html $result['content'];
      
    //Вытаскиваем сессию
      
    $count=preg_match_all('#<a href="(.+?)"><span>
    (.+?)</span></a>#i'
    $html$matches);
      
    $href htmlspecialchars($matches[1][2]);
      
    $session=substr($href,11,10);

    //Останавливаем Чат
      
    $ch curl_init();
      
    curl_setopt($chCURLOPT_URL"http://qchat.su:2222
    /?uid=root_
    $session&page=srvs_stop&ns=$sysname");
      
    curl_setopt($chCURLOPT_HEADERfalse);
      
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
      
    curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
      
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 
    1.1.4322)'
    );
      
    $data curl_exec($ch);
      
    curl_close($ch);
      
      
    sleep(10);   // Пауза 10 секунд

    //Запускаем Чат
      
    $ch curl_init();
      
    curl_setopt($chCURLOPT_URL"http://qchat.su:2222/?uid=root_$session&page=srvs_start&ns=$sysname");
      
    curl_setopt($chCURLOPT_HEADERfalse);
      
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
      
    curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
      
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 
    1.1.4322)'
    );
      
    $data curl_exec($ch);
      
    curl_close($ch);
      
    ?>
    На компе все ок а с телефона вот ошибка
    Code:
    Notice: Undefined offset: 2 in m.php on line 44
    Вот, что делать(?
     
  5. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    ругается на $href = htmlspecialchars($matches[1][2]);.
    Вставь перед этой строчкой print_r($matches); и посмотри, что содержится в массиве.
     
  6. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Вот что выдал:
    Code:
    Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array () )
    
     
  7. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    что тогда не понятно?
    У тебя пуст массив с сессией
     
  8. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Так почему на компьютере все ок а через мобилу не тянет? Как решить трабл?
     
  9. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Да это в браузере мобилы такое показует
     
  10. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    ищи ошибку раньше
    например,в самом получении сессии
     
  11. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Суть понял, когда попробовал вывести результат после авторизации echo $html; И получил в ответ сообщение, о том что не верный IP адрес. Значит регулярка правильно построена, ошибка идет раньше, скрипт даже не авторизовывается почему-то, хотя на компе авторизация идет. На сайт запрос, в исходном виде, выглядит так:
    Code:
    ><FORM METHOD=POST ACTION="/">
    <INPUT TYPE=hidden NAME="page" VALUE="login">
    <INPUT TYPE=hidden NAME="ip" VALUE="/xx.xxx.xx.xxx">
    <INPUT TYPE=text NAME="name">
    <INPUT TYPE=password NAME="password">
    <INPUT TYPE=submit VALUE="Login">
    </FORM>
    
    А вот код авторизации через CURL:
    PHP:
    //Авторизовываемся
      
    $url 'http://qchat.su:2222';
      
    $username 'DVMade';
      
    $userpass '******';
      
    $sysname 'glamur';
      
    $ip '/'.$_SERVER['REMOTE_ADDR'];
      
    $postdata 'page=login&ip='.$ip.'&name='.$username.'&password='.$userpass;
      
    $result post_content$url$postdata );
      
    $html $result['content'];
    Проблема в IP получается! Ну почему на компе все работает?
     
  12. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    Потому, что
    Code:
    $ip = '/'.$_SERVER['REMOTE_ADDR'];
    Записывает адрес твоего мобильника, а нужен адрес сервера, на котором стоит скрипт и с которого идёт подключение к сайту с чатом.
    Когда ты тестировал скрипт на своём компе(видимо Denwer), IP адреса браузера(твой) и сервера, на котором стоит скрипт совпадали и ошибки не возникало. Надо было в начале темы уточнять, что "на компе" - это у себя.
     
    #12 bad_boy, 26 Mar 2011
    Last edited: 26 Mar 2011
  13. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Нет, эт все на сервере в этом и проблема что все стоит как надо и где надо а не работает на трубе
     
  14. Dr1ver

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

    Joined:
    20 Aug 2008
    Messages:
    83
    Likes Received:
    80
    Reputations:
    14
    $ip = '/'.$_SERVER['SERVER_ADDR'];

    а если так сделать? работает?
     
  15. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Всё Пашет Ура =) Спасибо Dr1ver'у
     
  16. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    DVMade
    Ты, кажется, не умеешь читать длинные предложения.
     
  17. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    Нет, я на самом деле думал, что нужен адрес мобильника, а не сервера!
     
  18. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    Это категория людей не читающих впринципе)
    У них глаз наметан на готовые решения.. Как подсветка синтаксиса.. Открыл форум, советы черным по черному а с готовым решением такая жееелтая табличка ---> Списать не думая тут
     
  19. DVMade

    DVMade Banned

    Joined:
    23 Jul 2010
    Messages:
    110
    Likes Received:
    3
    Reputations:
    0
    -=Zhenek=-, прикрыл бы свой рот и не влипал туда, куда не надо. Вероятно, это ты с категории людей которая любит тупо флудить, или ты охеренный идеал тут, который во всем супер шарит? Даже если и так, то все равно рот советую прикрыть
     
  20. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    Lol =)
    Все с тобой ясно..
    Ты считаешь я не прав?

    Твоя предыдущая тема : а именно твой пост, когда тебе дали готовый ответ.

    /showpost.php?p=2612740&postcount=6

    Ты тупо даже не смог подумать куда же втыкнуть решение О_о

    В бобруйск Животное!