Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: header

Сообщения:  [1-10]   [11-11] 

 
 автор: Trianon   (20.07.2008 в 00:18)   письмо автору
 
   для: zlt-nnov   (20.07.2008 в 00:10)
 

Что-то я не заметил,
где именно Ваш скрипт анализирует наличие в отклике полей Location: , Connection:... да и просто состояния ответа (302),
где именно у Вас не получается продолжить взаимодействие с сервером в рамках текущего вызова скрипта.

   
 
 автор: zlt-nnov   (20.07.2008 в 00:10)   письмо автору
 
   для: Trianon   (19.07.2008 в 23:40)
 

Это файл с функциями:

<?php
// Библиотека функций.

    
function ConectToServer($host='zhuki.mail.ru'$port='80')
    {
        
$sock fsockopen($host$port$errno$errstr);
        if(!
$sock)
        {
            echo(
"$errno($errstr)");
            return;
        }
        else
        {
            return 
$sock;
        }
    }
    function 
SendHeader($fp,$header)
    {
        if(
$header!="")
        {
            
// отправляем заголовки
            
fputs($fp$header);
        }
        else { echo(
"Заголовок ПУСТ!!!"); }
    }
    function 
WriteHeader($fp)
    {
        
$text="";  
        
$i=0;  
        while(!
feof($fp))  
        {  
            
$buff fgets($fp,1024);  
              
            
//preg_replace("!Set-Cookie:(.*)\n!","",$text);  
            //preg_match("!Set-Cookie:(.*)\n!",$buff,$out[$i]);  
              
            //@$cook[$i]=preg_replace("!Set-Cookie:(.*)\n!",$buff);  
            
echo ($buff);  
            
$text .= $buff;  
                      
        }  
        
preg_match_all('~^Set-Cookie:(.*)\\r$~m'$text$matches);
        
        
$count count($matches[1]);
        for(
$i=0;$i<$count;$i++)
        {
            
$cookis[$i]=$matches[1][$i];
        }
        return 
$cookis;
    }

// Функция записывает массив кукисов в файл
function write_array_in_file($array_cookis)
{
    
$file fopen("file.txt","w+");
    
    if(!
$file)
    {
        echo (
"Ошибка открытия файла");
    }
    else
    {
        
//echo("Файл открыл. Готов к записи");
        
fputs($file,serialize($array_cookis));            
        
fclose($file);        
    }
}

//Функция читает массив кукисов из файла
function read_array_in_file($filename="file.txt")
{
    
$file fopen($filename,"r");
    
$bufer fread($file,filesize($filename));
    
$var unserialize($bufer);
    
    
    
//echo("<br><br><br><br>");
    
foreach ($var as $index=>$value)
    {
        echo(
"$index - > $value<br>");
    }
    
}
?>




А это исполняемый файл ... index.php :

<?php

include_once('library/funcs.php');

//Примерный вид заголовка:
//"GET / HTTP/1.0\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\nHost: ya.ru\r\n\r\n";

$header  =  "GET / HTTP/1.0\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\nHost: zhuki.mail.ru\r\n\r\n";

    
//НаЧиНаЕм ИсПоЛьЗоВаТь
    
$fp ConectToServer();
    
SendHeader($fp$header);
    
$cks WriteHeader($fp);
    
    
write_array_in_file($cks);
    
read_array_in_file();
    
    
    
//Заголовок авторизации
    //$header  =  "POST /cgi-bin/auth HTTP/1.0\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\nReferer: http://zhuki.mail.ru\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\nHost: swa.mail.ru\r\nContent-Length: 257\r\nCookie: test_cookie1=1; ; number_pasport=a%3A6%3A%7Bi%3A6%3Bi%3A3%3Bi%3A5%3Bi%3A1%3Bi%3A4%3Bi%3A8%3Bi%3A3%3Bi%3A6%3Bi%3A2%3Bi%3A1%3Bi%3A1%3Bi%3A2%3B%7D\r\n\r\n";
    //SendHeader($fp,$header);
    //WriteHeader($fp);
    
    
?>




Вот собственно и всё что пока есть ... дальше продвинуться не получается ... немогу придумать как огранизовать.

В голову приходит только передавать усправление другому скрипту который будет дальше общатьсся с сервером, потом ещё другому ... и так далее.

Вообще хочется сделать один исполняемый файл.

Сейчас перменный куки записываются в текстовый файл. Потом извлекаются и будут вставляться в заголовок.

Пока что у меня даже авторизоваться полностью не получается.

   
 
 автор: BinLaden   (20.07.2008 в 00:02)   письмо автору
 
   для: zlt-nnov   (19.07.2008 в 23:29)
 

> а после этого сразу идёт следующий набор заголовков (клиента)

Ваш браузер (скорее всего MiniBrowser) просто после получения заголовка Location (это грубо говоря, на самом деле несколько позже) разрывает соединение и открывает новое.

   
 
 автор: Trianon   (19.07.2008 в 23:40)   письмо автору
 
   для: zlt-nnov   (19.07.2008 в 23:29)
 

для начала покажите, как Ваш скрипт отправляет первый запрос и принимает отклик на него.

   
 
 автор: zlt-nnov   (19.07.2008 в 23:29)   письмо автору
3.5 Кб
 
   для: Trianon   (19.07.2008 в 12:42)
 

Прочитал.

Но всё равно не понял как мне организовать общение с сервером.


Вот что я понял ... :
Клиент отправил первый набор заголовков --------->>>> Сервер ответил

hdr> HTTP/1.0 302 OK
hdr> Date: Fri, 18 Jul 2008 17:35:00 GMT
hdr> Server: Apache/1.3.27 (Unix) mru_xml/0.471 gorgona/2.1 mod_jk/1.2.4 mod_ruby/1.0.7 Ruby/1.6.8 mod_mrim/0.17
hdr> Connection: close
hdr> Content-Type: text/html
hdr> Content-Length: 550
cookie> t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAA AAAAAAAAAAAAgEvAcA; expires=Wed, 14 Jan 2009 17:35:00 GMT; path=/; domain=.mail.ru
hdr> Set-Cookie: t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAA AAAAAAAAAAAAgEvAcA; expires=Wed, 14 Jan 2009 17:35:00 GMT; path=/; domain=.mail.ru
cookie> Mpop=1216402500:417f7b7d01790a0219050219091d031b014 86c575c4a5c0702071b0070711e43485450 4a5d424953105e5b555a491a454c:zxcasdzxc@inbox.ru:; expires=Thu, 16 Oct 2008 17:35:00 GMT; path=/; domain=.mail.ru
hdr> Set-Cookie: Mpop=1216402500:417f7b7d01790a0219050219091d031b014 86c575c4a5c0702071b0070711e43485450 4a5d424953105e5b555a491a454c:zxcasdzxc@inbox.ru:; expires=Thu, 16 Oct 2008 17:35:00 GMT; path=/; domain=.mail.ru
hdr> Location: http://win.mail.ru/cgi-bin/checkcookie?id=417f7b7d01790a0219050219091d031b014 86c575c4a5c0702071b0070711e43485450 4a5d424953105e5b555a491a454c&page=http%3A%2F%2Fzhuki.mail.ru%2Fauth_data.php%3Fauth_passed%3D1%26x%3D%2531%2536%2532%26y%3D%2531%2530%26action1%3D%256C%256F%2567%2569%256E%26FailPage%3D%2568%2574%2574%2570%253A%252F%252F%257A%2568%2575%256B%2569%252E%256D%2561%2569%256C%252E%2572%2575%252F%2561%2575%2574%2568%255F%2564%2561%2574%2561%252E%2570%2568%2570%253F%2561%2575%2574%2568%255F%2570%2561%2573%2573%2565%2564%253D%2530
cookie> mrcu=42574880D4445CDB5149C89BCD58; expires=Mon, 16 Jul 2018 17:35:00 GMT; path=/; domain=.mail.ru
hdr> Set-Cookie: mrcu=42574880D4445CDB5149C89BCD58; expires=Mon, 16 Jul 2018 17:35:00 GMT; path=/; domain=.mail.ru
hdr> Cache-Control: no-cache,no-store,must-revalidate
hdr> Pragma: no-cache
hdr> Expires: Thu, 19 Jul 2007 17:35:00 GMT
hdr> Last-Modified: Fri, 18 Jul 2008 21:35:00 GMT



hdr> HTTP/1.0 302 OK --- ОЗНАЧАЕТ что 302 Moved Temporarily (Временно перемещен)
hdr> Connection: close ---- Сервер закрывает соединение.
hdr> Location: http://win.mail.ru/cgi-bin/checkcookie?id= ...... --- переадресовывает нас ....

ВОТ .... а после этого сразу идёт следующий набор заголовков (клиента) .... а как это сделать то ? Если в том же скрипте сразу после получения заголовков ответа посылать вторые заголовки и третьи то выдаётся ошибка ...

Может быть тогда можно сразу все заголовки отправить ? (за один подход сразу все все ... ) ... хотя так не получится. (нужно же куки выдирать.)

Если кому то не составит труда посмотреть мои нароботки то буду очень признателен. Прикрепляю архив.

Может быть тогда поймёте что у меня не получается.


Может быть кто то делал что то подобное. Натолкните на нужный подход решения этой проблемы.

В итоге хочу получить веб бота для игры. (чтобы он рандомно ходил по игре .... )

   
 
 автор: Trianon   (19.07.2008 в 12:42)   письмо автору
 
   для: zlt-nnov   (19.07.2008 в 08:25)
 

русский перевод RFC-2616 - Hypertext Transfer Protocol -- HTTP/1.1

   
 
 автор: zlt-nnov   (19.07.2008 в 09:43)   письмо автору
 
   для: sms-send   (19.07.2008 в 08:38)
 

МЫ - они же cmd> они же локальный веб сервер (в данный момент он клиент)

ОНИ - они же hdr> - они же Сервер (Отвечают на наши запросы.)

   
 
 автор: sms-send   (19.07.2008 в 08:38)   письмо автору
 
   для: zlt-nnov   (19.07.2008 в 08:25)
 

"Мы" - это сервер или клиент?

   
 
 автор: zlt-nnov   (19.07.2008 в 08:25)   письмо автору
 
   для: BinLaden   (19.07.2008 в 00:51)
 

Но как то ведь эту проблему можно решить ... .

Кто знает как можно сделать ?

   
 
 автор: BinLaden   (19.07.2008 в 00:51)   письмо автору
 
   для: zlt-nnov   (18.07.2008 в 22:09)
 

> Дальше мы опять должны слать заголовки. Но как это сделать ?!

В HTTP/1.0 - никак.

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования