Добрый день! Есть форма в ней 2 поля: username/password Мне необходимо пройти авторизацию с другого сервера Вот функция: PHP: function bot($server, $port, $path, $second) { $write = ''; $fp = fsockopen($server, $port, $errno, $errstr, $second); if ($fp) { $write .= 'POST $path HTTP/1.0\r\n'; $write .= 'Host: $server\r\n\r\n'; $write .= 'username = vasea'; $write .= 'password =123456'; fwrite($fp, $write); fclose($fp); }else{ echo 'BORODA'; } } Почему это: PHP: $write .= 'username = vasea'; $write .= 'password =123456'; не передается в форму?
nws Пременные передаваемые POST должны разделяться символом & и между = и именем и значением переменной пробелов быть не должно. Учите матчасть.
PHP: $write .= 'username=vasea&password=123456'; Все равно данные не передаются в форму. Выводится пустая страница.
И вообще, лучше не сокращать, а полностью все писать, в т.ч. и псевдозаголовки браузера. И Connection: Close тоже писать. Я помню по первой, списал пример скрипта с книги. 1:1, тоже отправка данных в форму, но он зараза по 20 секунд работал.Оказалось в книге была ошибка, они забыли дописать Connection: Close.
Немного переписал функцию: PHP: function bot($server, $port, $path, $second) { $write = ''; $read = ''; $fp = fsockopen($server, $port, $errno, $errstr, $second); if ($fp) { $params = "username=vasea&password=123456"; $size = strlen($params); $write .= "POST $path HTTP/1.0\r\n"; $write .= "Host: $server\r\n"; $write .= "Content-Type: application/x-www-form-urlencoded\r\n"; $write .= "Content-Length: $size\r\n"; $write .= "User-Agent: Vasea\r\n"; $write .= $params; $write = "Connection: Close\r\n\r\n"; fwrite($fp, $write); while (!feof($fp)) { $read .= fgets($fp, 8192); } for ($i = 5; $i < strlen($read); $i++) { if (substr($read, $i - 3, 4) == "\r\n\r\n") { $read = substr($read, $i + 1); $i = strlen($read); } } fclose($fp); } else { $read = ""; } return $read; } Результат: 400 - Bad Request Не могу понять почему ((
$write .= $params; должно идти после $write = "Connection: Close\r\n\r\n"; Этого можно достичь двумя путями. Смотри мой скрипт здесь: http://php.ru/forum/viewtopic.php?t=12934
nws PHP: echo "<pre>$write</pre>"; Посмотри как выглядит заголовок отправляемый. Вот тут полезная статья: http://www.codenet.ru/webmast/php/HTTP-POST.php
Всем спасибо! Надо писать PHP: $params = "username=".urlencode("vasea")."&password=".urlencode(123456)."\r\n\r\n"; Вместо PHP: $params = "username=vasea&password=123456";