1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Автосабмиттер

Тема в разделе "PHP программирование", создана пользователем Adamant, 14 янв 2008.

  1. Adamant

    Adamant Гость

    Репутация:
    0
    Уважаемые программисты, нужна ваша помощь.
    Осваиваю 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 этой же страницы, но там авторизации нет. Вот и не знаю, что мне с этим делать?
    Однозначно нужен ваш совет специалиста.
    С уважением Вячеслав.
     
  2. MajestiC

    MajestiC Гость

    Репутация:
    0
    Лучше curl используй.
     

Поделиться этой страницей