A
Adamant
Уважаемые программисты, нужна ваша помощь.
Осваиваю HTTP. Решил написать автосабмиттер для тренировки.Не могу понять в чем дело. Скрипт должен авторизовываться на сайте методом пост.
Взял за образец сайт loadit.ru , (думаю ни кого не обижу).
Форма для входа такая:
Скрипт написал такой:
Сервер прислал такие заголовки:
Авторизоваться не получается. Несколько дней провел за чтением мануалов, но не нашел ответа на свою проблему.
Как получить тело самой страницы, которая после этого отображается?
Пробовал потом смотреть readfile этой же страницы, но там авторизации нет. Вот и не знаю, что мне с этим делать?
Однозначно нужен ваш совет специалиста.
С уважением Вячеслав.
Осваиваю HTTP. Решил написать автосабмиттер для тренировки.Не могу понять в чем дело. Скрипт должен авторизовываться на сайте методом пост.
Взял за образец сайт loadit.ru , (думаю ни кого не обижу).
Форма для входа такая:
Код:
<form method="post">
<input name="login_name" type="text">
<input name="login_password" type="password">
<input name="login" type="hidden" id="login" value="submit"><
</form>
Код:
set_time_limit(0);
//Логин и пароль 666666
$fp = fsockopen("loadit.ru", 80, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
exit();
}
$post_data = "login_name=666666&login_password=666666&login=submit";
$out = "POST / HTTP/1.1\r\n";
$out .= "Host: loadit.ru\r\n";
$out .= "Connection: Close\r\n\r\n";
$out .= "Accept: text/html;\r\n";
$out .= "Referer: http://loadit.ru\r\n";
$out .= "Connection: Close\r\n";
$out .= "Content-Length: ".strlen($post_data)."\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n\r\n";
$out .= $post_data;
fwrite($fp, $out);
$result = '';
while (!feof($fp))
{
$result .= fgets($fp, 128);
}
fclose($fp);
// зарегились
$fp = fsockopen("loadit.ru.", 80, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
exit();
}
preg_match_all('/Set-Cookie: ([^;]+)/',$result,$cook,PREG_PATTERN_ORDER);
echo "<pre>";
print_r($cook);
echo "</pre><br />";
$out = "GET / HTTP/1.0\r\n";
$out.= "Cookie: ".implode("; ",$cook[1])."\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
echo "<pre>";
echo fgets($fp, 128);
echo "</pre>";
}
fclose($fp);
Код:
Array
(
[0] => Array
(
[0] => Set-Cookie: PHPSESSID=ac75f6d75f4a7c9110deba355d5d2b4a
)
[1] => Array
(
[0] => PHPSESSID=ac75f6d75f4a7c9110deba355d5d2b4a
)
)
HTTP/1.1 200 OK
Date: Sun, 13 Jan 2008 00:34:27 GMT
Server: Apache/2
Last-Modified: Wed, 24 Oct 2007 22:56:55 GMT
ETag: "2060403-2c-8b59bc0"
Accept-Ranges: bytes
Content-Length: 44
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html
Apache is functioning normally
Как получить тело самой страницы, которая после этого отображается?
Пробовал потом смотреть readfile этой же страницы, но там авторизации нет. Вот и не знаю, что мне с этим делать?
Однозначно нужен ваш совет специалиста.
С уважением Вячеслав.