|
|
|
| Сразу к делу:
есть следующий код:
<?php
#
# Script to flood
#
$hostname = "site.ru";
$path = "/login/";
$SID;
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
}
else {
echo "Success<br />\n";
#
# Блок авторизации
#
$data ="name=".urlencode("Maxigan")."&password=".urlencode("cfbebdeb")."&\r\n\r\n";
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Accept: *\r\n";
$headers .= "Accept-Charset: *\r\n";
$headers .= "Accept-Encoding: deflate\r\n";
$headers .= "Accept-Language: ru\r\n";
$headers .= "User-Agent: Opera/8.01 (Windows NT 5.1; U; ru)\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";
$fw = fwrite($fp, $headers.$data);
if(!$fw)
echo "Bad<br />\n";
else
echo "Success<br />\n";
sleep(1);
while (!feof($fp))
{
$line = fgets($fp, 1024);
echo $line;
// Ищем строку вида
// Set-Cookie: PHPSESSID=6197e647566bdaa24da3ab42ae7604b2;
// Именно она устанавливает cookie
preg_match("|Set-Cookie: PHPSESSID=([\d\w]+);|i",$line,$out);
if(!empty($out[1]))
{
global $SID;
$SID = $out[1];
echo $SID;
}
}
#
# Блок отправки сообщения
# закоментировал нафиг, ибо мешает
/*
$path = "/talk/reply/";
$hostname = "forums.site.ru";
$data = "body=".urlencode("preved")."&id_topic=".urlencode("126089");
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Cookie: UID=90024; PASSWORD=172d53988c1c05ae22f72874d009639b\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";
$fw = fwrite($fp, $headers.$data);
if(!$fw)
echo "Bad<br />\n";
else
echo "Success<br />\n";
while(!feof($fp))
echo fgets($fp,1000);
*/
}
?>
|
Цель данного скрипта - опробовать сайт на возможность отправки сообщений через скрипт.
Прошу уделить пока внимание к блоку авторизации. Его смысл в следующем: передать сайту методом POST имя и пароль для авторизации.
Если имя и пароль неправильные, то скрипт выведет страницу логина, в которой сайт попросит ввести корректные данные.
Если имя и пароль правильные, то выводятся только следующие заголовки:
HTTP/1.1 301 Moved Permanently Date: Wed, 19 Jul 2006 10:03:25 GMT Server: Apache/1.3.34 (Unix) Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Content-Encoding: deflate Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache Vary: Accept-Encoding X-Powered-By: PHP/5.1.4
Set-Cookie: PHPSESSID=hbebbgmag4520u9rmslqhhj560; path=/; domain=site.ru
Set-Cookie: USERID=2013034054; expires=Sat, 16-Jul-2016 10:03:25 GMT; path=/; domain=site.ru Set-Cookie: USERID=90024; expires=Fri, 18-Aug-2006 10:03:25 GMT; path=/; domain=site.ru Set-Cookie: PASSWORD=172d53988c1c05ae22f72874d009639b; expires=Wed, 26-Jul-2006 10:03:25 GMT; path=/; domain=site.ru Cache-Control: max-age=0 Expires: Wed, 19 Jul 2006 10:03:25 GMT Last-Modified: Wed, 19 Jul 2006 10:03:25 GMT Location: http://www.site.ru Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=windows-1251 d xњ
Соответственно никакой авторизации не происходит. Вопрос: отчего возникает ошибка 301? Что неправильного в коде? | |
|
|
|
|
|
|
|
для: cyberface
(19.07.2006 в 14:41)
| | Код возврата 301 - это переадресация, скрипт просит вас загрузить URL по ссылке, указанной в заголовке Location. | |
|
|
|
|
|
|
|
для: cheops
(19.07.2006 в 15:51)
| | Спасибо, модифицировал скрипт - все работает =) | |
|
|
|