Короче тут описан пост запрос на сайт www.weblancer.net/ Но он вообще никак не реагирует( Что не хватает???Или кук нехватает как их прикрепить??? PHP: <? set_time_limit(100); function Post($server,$url,$post) { $q="POST $url HTTP/1.1\r\n". "Host: $server\r\n". "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n". 'Accept:text/html, image/jpeg, image/png, text/*, image/*, */*'."\r\n". "Accept-Encoding: x-gzip, x-deflate, gzip\r\n". "Accept-Charset: windows-1251, utf-8;q=0.5, *; q=0.5\r\n". "Accept-Language:ru, en\r\n". "Keep-Alive: 300\r\n". "Proxy-Connection: keep-alive\r\n". "Referer: $server \r\n". // "Content-Type: application/x-www-form-urlencoded\r\n". "Content-Length: ".strlen($post)."\r\n". "\r\n". "$post\r\n"; $s=fsockopen($server,80); fputs($s,$q); while (!feof($s)) $page.=fgets($s); fclose($s); return $page; } echo Post('91.196.0.75','http://www.weblancer.net/','login=Buffalon&password=xXx'); ?> Сама функция работает отлично .Проверял у себя на локалхосте , а вот тут я забыл что то в пост указать?
Ммм, каг бе у меня скрипт работает, во всяком случае ответ есть. Мб у тя заблокированы сокеты на хостинге?
Используй Curl , на много проще, чем возиться с зоголовками, и зачем у тебя set_time_limit(100); , что запрос к серваку и отдача от него будет идти почти 2 менуты. В CURL для установки кукисов используй CURLOPT_COOKIE а для работы с проксиком CURLOPT_PROXY
Да ответ есть , вопрос в том что не могу залогинеться , если даже логин не верный то он должен выдавать другой текст типа пароль не верен.А у меня вообще ничего не передаёт .Какой Пост я забыл указать?
set_time_limit(100); У меня GRPS ВСегда хотел узнать что такое Курл да времени не хватало , а сейчас пишу скрипт - как раз самое время - говорят не сложно разобраться , а можно плмз пример с КУРЛ?
И не хватает полей в посте action=login&return_url=%2F&login=Buffalon&password=xXx&x=15&y=6 приблизительно так
Вот держи PHP: $handle = curl_init(); curl_setopt($handle, CURLOPT_COOKIE, 'remixlang=0;'); curl_setopt($handle, CURLOPT_PROXY, '91.196.0.75:80'); curl_setopt($handle, CURLOPT_VERBOSE, false); curl_setopt($handle, CURLOPT_HEADER, false); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); curl_setopt($handle, CURLOPT_REFERER, 'http://www.weblancer.net/'); curl_setopt($handle, CURLOPT_URL, 'http://www.weblancer.net/account/login/'); curl_setopt($handle, CURLOPT_USERAGENT, 'User-Agent: Mozilla/6.0 (Windows; U; Windows NT 6.1; ru; rv:2.9.0.4) Gecko/2009102920 Firefox/3.1.4'); curl_setopt($handle, CURLINFO_HEADER_OUT, true); curl_setopt($handle, CURLOPT_POST, true); curl_setopt($handle, CURLOPT_POSTFIELDS, 'action=login&login=Buffalon&password=xXx'); echo $response = iconv('windows-1251', 'UTF-8', curl_exec($handle)); //echo $response = curl_exec($handle); // У меня просто все на UTF8 curl_close($handle); Ответ сервера:
Можешь привести тесты или статью где это описано что медленей? fsockopen ты на прямую просто работаешь с сокетами, а Curl уже все сделано и не надо заморачиваться, но даже если Curl меделение fsockopen, то Curl выигрывает в том что можно использовать curl_multi
Учить не чего не надо, надо просто читать документацию и понимать что делаеться и как, а остальное в голове само сабой заложеться
http://habrahabr.ru/blogs/php/42158/ ))) Мда, чото я сегодня не в форме. Сорри ЗЫЖ Даже больше - когда fsockopen отключен на сайте, curl практически всегда работает. Вот это сел в лужу Ставьте мне минусы быро
Ставить не чего не будем Но у Curla есть не большой не достаток, он заключает в том чно не может работать с патоком даных, если я правильно выразился, т.е если использовать протокол SMTP то уж тут не как не обойтись без Socket Functions
Неа.. не правильно понял Там отправялеться запрос на подключение и читаем ответ и если ответ 220, то отправляем запрос приветсвия EHLO и все это идет в одном соедение. Вот не большой пример PHP: $socket = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP ) ; socket_connect ( $socket, $domen_mx, 25 ) ; $tmp_soket = socket_read ( $socket, 512 ) ; if (substr ( $tmp_soket, 0, 3 ) !== '220') { return false ; } socket_write ( $socket, "EHLO {$domain}\n" ) ; $tmp_soket = socket_read ( $socket, 512 ) ; if (substr ( $tmp_soket, 0, 3 ) !== '250') { return false ; }