Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Socket
Форум программистов > Интернет и сети > Web-программирование > PHP программирование
nws
Добрый день!
Есть форма в ней 2 поля: username/password
Мне необходимо пройти авторизацию с другого сервера
Вот функция:

Код
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';    
    }

}


Почему это:
Код
$write .= 'username = vasea';
$write .= 'password =123456';


не передается в форму?
nws
Код
function bot($server, $port, $path, $second)

{

  
    $write = '';
    $read = '';

    $fp = fsockopen($server, $port, $errno, $errstr, $second);

    if ($fp)

    {
        $params = "username=".urlencode("vasea")."&password=".urlencode("123456")."\r\n\r\n";
        $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 .= "Cookie: lang=russian;\r\n";
        $write .= "User-Agent: Vasea\r\n";
        $write .= "Content-Length: $size\r\n";
        $write .= "Connection: Close\r\n\r\n";
        $write .= $params;
      
        echo '<pre>';
        echo $write;
        

        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;
  

}
lazutov
1) параmетры должны передаватся в заголовке POST

Код
<?
$host="host.ru";
$addr="/index.php"; //форма
$useragent="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:3.0.0.1)";
$login="";
$password="";
$data="UserName=$login&PassWord=$password";
$request=
"POST $addr HTTP/1.1\r\n".
"Accept: */*\r\n".
"Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n".
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n".
"Accept-Encoding: gzip,deflate\r\n".
"User-Agent: $useragent\r\n".
"Host: $host\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".strlen($data)."\r\n".
"Connection: Close\r\n\r\n$data";

// послать и получить ответ ,полагаю, сами сможете.
?>



Вариант 2 , что красивее и удобнее

Код
$url = "http://www.site.ru/form.php";
$login = '';
$password = '';
$ch = curl_init();  // открыли курл
curl_setopt($ch, CURLOPT_URL,$url); // куда посылаем  
curl_setopt($ch, CURLOPT_HEADER, 0); //  нам НЕ  нужны заголовки
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // резалт помащать в переменную, а не выводить
curl_setopt($ch, CURLOPT_TIMEOUT, 3); // макс время одидания
curl_setopt($ch, CURLOPT_POST, 1); //  POST будет использоваться
curl_setopt($ch, CURLOPT_POSTFIELDS, "UserName=$login&PassWord=$password1"); // сами значения
$result = curl_exec($ch); // запустим запрос
curl_close($ch); // закрыли курл  
//страница загружена в $result

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.