Осваиваю Curl, написал скрипт авторизации, но он не работает =( Помогите разобраться, что сделал не так?) PHP: <?php $nick=testcurl; $pass=1q2w3e4r5t6y; $post_auth = "Login=".$nick."Password=".$pass; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://win.mail.ru/cgi-bin/auth'); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cook.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt'); curl_setopt($ch, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru)"); curl_setopt($ch, CURLOPT_REFERER, 'http://www.mail.ru'); curl_setopt($ch, CURLOPT_TIMEOUT,3); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_auth); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $out = curl_exec($ch); echo $out; ?>
AnGeI, не, даже не в этом дело.. Я на разных сайтах пробовал, просто для удобства зарегал почтовик и на майл кинул... После захода на страницу она пустая. Файл с куками тоже пуст =( Если есть возможность, то можно проверить, ящик в коде валидный...
отправляй по-больше заголовков. response_header Code: Array ( [0] => HTTP/1.1 302 OK [1] => Server: nginx/0.7.62 [2] => Date: Thu, 19 May 2011 14:40:59 GMT [3] => Content-Type: text/plain [4] => Connection: close [5] => Set-Cookie: t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAACAAAEBrQcA; expires=Tue, 15 Nov 2011 14:40:59 GMT; path=/; domain=.mail.ru [6] => Set-Cookie: Mpop=1305816059:7e5e47417f010d50190502190f1d00071c050b0b4966535c465d05080c050416037501164d5d42445242475b145c555e551f4243:[email protected]:; expires=Wed, 17 Aug 2011 14:40:59 GMT; path=/; domain=.mail.ru [7] => Location: http://e.mail.ru/cgi-bin/msglist?back=1 [8] => Set-Cookie: mrcu=98F74DD52BFB0F21217A0100007F; expires=Sun, 16 May 2021 14:40:59 GMT; path=/; domain=.mail.ru [9] => Content-Length: 0 [10] => X-Host: f172.mail.ru [11] => HTTP/1.1 302 OK [12] => Server: nginx/0.7.62 [13] => Date: Thu, 19 May 2011 14:40:59 GMT [14] => Content-Type: text/plain [15] => Connection: close [16] => Location: http://e.mail.ru/cgi-bin/login [17] => Set-Cookie: mrcu=E6D64DD52BFB2FA4E9990100007F; expires=Sun, 16 May 2021 14:40:59 GMT; path=/; domain=.mail.ru [18] => Content-Length: 0 [19] => X-Host: f179.mail.ru [20] => X-XSS-Protection: 0 [21] => HTTP/1.1 200 OK [22] => Server: nginx/0.7.62 [23] => Date: Thu, 19 May 2011 14:40:59 GMT [24] => Content-Type: text/html; charset=utf-8 [25] => Connection: close [26] => Pragma: no-cache [27] => Cache-Control: no-cache, no-store [28] => Expires: Thu, 19 May 2011 14:40:59 GMT [29] => Frontend-key: 217.69.128.155 [30] => P3P: policyref="/w3c/p3p.xml", CP="NON CUR ADM DEV PSA PSD OUR IND UNI NAV INT STA" [31] => Set-Cookie: mrcu=1A704DD52BFB7C946D6E25662E4E; path=/; expires=Fri, 18 Jul 2036 13:20:00 GMT; domain=.mail.ru [32] => X-Host: f222.mail.ru [33] => X-XSS-Protection: 0 ) Список писем: http://e.mail.ru/cgi-bin/msglist?back=1
AnGeI, А как именно отправлять больше, и чего именно в них должно быть больше? Поиграл с заголовками, но все тоже, тустая страница, и пустой файл с куками =(
Code: "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1". "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5". "Accept-Language: en-us,en;q=0.5". "Accept-Charset: windows-1251,ISO-8859-1,utf-8;q=0.7,*;q=0.7". "Content-Type: application/x-www-form-urlencoded". "Referer: http://mail.ru" Может быть курл недоступен/не установлен? Можно попробовать через steam_context
M1lten, может не $post_auth = "Login=".$nick."Password=".$pass; а $post_auth = "Login=".$nick."&Password=".$pass;
Fepsis, дело в том что если данные вносить в переменную, то вообще ничего не происходит... Хотя это наверное моя ошибка... Сейчас происходит запить кукисов, в файл код: PHP: <?php //$nick=testcurl; //$pass=1q2w3e4r5t6y; //$post_auth = "Login=".$nick."Password=".$pass; //$post_auth = "Login=".$nick."&Password=".$pass; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://win.mail.ru/cgi-bin/auth'); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cook.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cook.txt'); curl_setopt($ch, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1 U ru)"); curl_setopt($ch, CURLOPT_REFERER, 'http://www.mail.ru'); curl_setopt($ch, CURLOPT_TIMEOUT,3); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "Login=testcurl&Password=1q2w3e4r5t6y"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $out = curl_exec($ch); echo $out; curl_close($ch); ?> НО, все так же белая страница, а в тексотом файле, всего лишь такая запись: А если обращаюсь не к http://win.mail.ru/cgi-bin/auth, а к просто к http://www.mail.ru , то отображается главная страница майл.ру и в файл пишется:
Разобрался, авторизация проходит успешно... Кому не сложно прошу помочь со следующим.. Я авторизован. Теперь мне нужно перейти пост запросом на страницу main.php(т.к. если переходить гетом, юзер разлогинется), узнать, есть ли в исходном коде допустим значение 123456, ну как найти проблемы не составит, со строковыми ф-к я вроде как дружу)) Но вот как это реализовать, что бы сделать проверку на наличие значения в исходнике? После того, если это значение существует, перейти на страницу main2.php, тоже пост запросом...
Регулярки. Для начала можешь почитать на validweb.ru в разделе PHP, там тема закреплённая. Ссылку щас дать не могу, поскольку сайт что то не работает.
XAMEHA, спс. Регулярками я-то смогу узнать те ссылки и значения в исходнике. Но, вот как в него глянуть? Можно в принципе курлом сохранить страницу, а потом заюзать поиск в файле, но хотелось бы что-то менее геморное =)
НTL php.net/pack, php.net/unpack Или же работайте как с обычной строкой M1lten для авторизации на мейл.ру требовалось раньше указание домена, которому принадлежит почта - вы уверены что логина и пароля достаточно для авторизации? Попробуйте посмотреть примеры, как используется курл, прежде чем писать с помощью него что-то
Вопрос не совсем по PHP, но чтобы не создавать лишних тем спрошу тут... В общем необходимо контролировать точное время на сайте, время сервера не всегда соответствует точному времени... Поэтому интересует какой-нибудь сторонний сервер, с запросом на который можно получить точное время... то есть, что-то вроде этого: http://www.direct-time.ru/ я вот только не уверен в надёжности этих данных, ну и может есть что-то по удобнее... UPD Вот в принципе на том же самом http://www.direct-time.ru/ в заголовках ответа выдаёт то что нужно: Date=Sat, 21 May 2011 10:28:45 GMT ХЗ только, там действительно точное время и оно стабильно..?!
Gifts, не пашет что-то.. Пробовал даже другие NTP-серваки с соответствующими портами скрипту кормить, всё равно: "unable to connect to..." Да в общем пофигу, выдерну время из заголовков direct-time.ru... Спасибо!
Fepsis да, действительно, просто там немного не NTP протокол, а daytime. Вот список серверов под эту функцию: http://tf.nist.gov/tf-cgi/servers.cgi PHP: function sinctimestamp($host) { if (!$fp = fsockopen($host,13,$errno,$errstr,1)) return false; $s = strtotime(fgets($fp)); fclose($fp); return $s; } echo date('r', sinctimestamp('nist.netservicesgroup.com'));