Привет всем. Возникла такая проблема, значит составил я скрипт PHP с использованием CURL. Загнал его на моб сайта, ну обычный сайт просто с моб разметкой, вот на компе этот скрипт пашет а на мобильниках никуя. В чем причина не подскажете?! Как ег она мобе заставить пахать?
Может быть нарушены стандарты html. И, скажем, на компьютере Opera\FF\IE такое пропускают, а мобильный браузер - нет.
CURL = PHP. PHP выполняется на сервере, независимо от браузера, слкдовательно проблема в верстке, отображении результата. попробуй с Operы Mini если есть возможность, посмотри что покажет она
Вот код скрипта 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($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_ENCODING, ""); curl_setopt($ch, CURLOPT_USERAGENT, $uagent); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_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($ch, CURLOPT_URL, "http://qchat.su:2222 /?uid=root_$session&page=srvs_stop&ns=$sysname"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_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($ch, CURLOPT_URL, "http://qchat.su:2222/?uid=root_$session&page=srvs_start&ns=$sysname"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_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 Вот, что делать(?
ругается на $href = htmlspecialchars($matches[1][2]);. Вставь перед этой строчкой print_r($matches); и посмотри, что содержится в массиве.
Суть понял, когда попробовал вывести результат после авторизации 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 получается! Ну почему на компе все работает?
Потому, что Code: $ip = '/'.$_SERVER['REMOTE_ADDR']; Записывает адрес твоего мобильника, а нужен адрес сервера, на котором стоит скрипт и с которого идёт подключение к сайту с чатом. Когда ты тестировал скрипт на своём компе(видимо Denwer), IP адреса браузера(твой) и сервера, на котором стоит скрипт совпадали и ошибки не возникало. Надо было в начале темы уточнять, что "на компе" - это у себя.
Это категория людей не читающих впринципе) У них глаз наметан на готовые решения.. Как подсветка синтаксиса.. Открыл форум, советы черным по черному а с готовым решением такая жееелтая табличка ---> Списать не думая тут
-=Zhenek=-, прикрыл бы свой рот и не влипал туда, куда не надо. Вероятно, это ты с категории людей которая любит тупо флудить, или ты охеренный идеал тут, который во всем супер шарит? Даже если и так, то все равно рот советую прикрыть
Lol =) Все с тобой ясно.. Ты считаешь я не прав? Твоя предыдущая тема : а именно твой пост, когда тебе дали готовый ответ. /showpost.php?p=2612740&postcount=6 Ты тупо даже не смог подумать куда же втыкнуть решение О_о В бобруйск Животное!