Проблемы с отсылкой заголовков через PHP
Нужно сделать имитацию авторизации путем анализа заголовков. При отсылке нижеследующего заголовка через стороннюю программу все пашет и авторизируется:
PHP код:
POST http://win.mail.ru/cgi-bin/auth HTTP/1.1
Content-Type: application/x-www-form-urlencoded
page=&post=&login_from=&Login=user&Domain=mail.ru&Password=1234
Но у меня хоть убей не вышло сделать тоже самое на php. Всегда пишет 400 Bad Request или ещё что-нибудь. Сокеты включены, все включено. Дело в скрипте. Часа два уже вожусь и сдвигов - ноль. Вот код, который я юзал:
PHP код:
<?php
// открываем сокет на хост: локалост и на 80 порт (стандартный веб)
$fp = fsockopen('win.mail.ru', 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
$headers = "POST http://win.mail.ru/cgi-bin/auth HTTP/1.1"; // отвечает за тип протокола!
$headers .= "Host: mail.ru\r\n";
$headers .= "Referer: http://www.site.ru/index.html\r\n";
$headers .= "Cookie: income=1\r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded";
$headers .= "Content-Length: 35\r\n";
$headers .= ": \r\n";
$headers .= "page=&post=&login_from=&Login=user&Domain=mail.ru&Password=1234";
$headers .= "Connection: Close";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers);
// Получаем ответ
$line='';
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
Спасите меня плз :( Как отправить эти сраные заголовки на серв? Объясните хотя бы принцип... что у меня не так? Плз не предлагайте cURL юзать. Он как-то странно пашет (из четырех хостов, где он установлен, работает только на одном) и не везде есть, к тому же. Пасиб
|