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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: headers
 
 автор: Oligarx   (17.04.2006 в 02:59)   письмо автору
 
 

Значит вот такие заголовки

cmd> GET / HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: netwars.ru
cmd> 
hdr> HTTP/1.1 200 OK
hdr> Date: Sun, 16 Apr 2006 22:26:14 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
RequestDone Error = 0
StatusCode = 200


Я соединяюсь с индексной страницей так

<?
$hostname
="netwars.ru";
$fp=fsockopen($hostname80$errno$errstr30);
if(!
$fp) echo "$errstr ($errno)<br />\n";
else
{
// Формируем запрос для отправки его серверу
$headers "GET / HTTP/1.0\r\n";
$headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n";
$headers .= "Host: netwars.ru\r\n\r\n";

//отправляем запрос
fwrite($fp$headers);
}
?>


всё работает ... дальше мне нужно авторизоваться ... и пройти в защищённую область и путешествовать там ...

вот как это сделать уже не знаю!
Знаю только что если авторизовываться то браузер и сервер обмениваются следующими заголовками

cmd> POST /enter.php HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://netwars.ru
cmd> Content-Type: application/x-www-form-urlencoded
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auth.netwars.ru
cmd> Content-Length: 48
cmd> 
hdr> HTTP/1.1 302 Found
hdr> Date: Sun, 16 Apr 2006 22:26:28 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
cookie> PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402; path=/
hdr> Set-Cookie: PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402; path=/
hdr> Expires: Thu, 19 Nov 1981 08:52:00 GMT
hdr> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
hdr> Pragma: no-cache
hdr> Location: /welcome.php
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
cmd> GET /welcome.php HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://netwars.ru
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auth.netwars.ru
cmd> Cookie: PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402
cmd> 
hdr> HTTP/1.1 200 OK
hdr> Date: Sun, 16 Apr 2006 22:26:29 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
cookie> PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402; path=/
hdr> Set-Cookie: PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402; path=/
hdr> Expires: Thu, 19 Nov 1981 08:52:00 GMT
hdr> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
hdr> Pragma: no-cache
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
RequestDone Error = 0
StatusCode = 200


на всякий случай объясню, что cmd> это браузер а hdr> это сервер ...

ну так вот, загвоздка у меня в том, что я не знаю как отправлять так заголовки (тоесть 2 раза за 1 сеанс) ну или как ещё выразиться понятнее ...
при переходе на страницу ... браузер отсыдает заголовки, получает ответ, отсылает, и ещё раз что то получает ...

Мне бы это всё осознать и понять как можно 2 раза ... с вкраплениями ответов сервера отправить заголовки ...

   
 
 автор: Oligarx   (17.04.2006 в 12:53)   письмо автору
 
   для: Oligarx   (17.04.2006 в 02:59)
 

Кто-нибуть поможет ?! ... вроде всё подробно описал

   
 
 автор: cheops   (17.04.2006 в 18:29)   письмо автору
 
   для: Oligarx   (17.04.2006 в 02:59)
 

А так и отправляйте - формируйте новый $header
<?php
// Формируем запрос для отправки его серверу 
$headers "GET / HTTP/1.0\r\n"
$headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n"
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n"
$headers .= "Host: netwars.ru\r\n\r\n"

//отправляем запрос 
fwrite($fp$headers);
?>

и шлите его fwrite().

   
 
 автор: Oligarx   (17.04.2006 в 19:27)   письмо автору
 
   для: cheops   (17.04.2006 в 18:29)
 

Ладно, спрошу подругому ...

cmd> POST /enter.php HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://netwars.ru
cmd> Content-Type: application/x-www-form-urlencoded
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auth.netwars.ru
cmd> Content-Length: 48
cmd> 
hdr> HTTP/1.1 302 Found
hdr> Date: Mon, 17 Apr 2006 15:19:03 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
cookie> PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
hdr> Set-Cookie: PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
hdr> Expires: Thu, 19 Nov 1981 08:52:00 GMT
hdr> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
hdr> Pragma: no-cache
hdr> Location: /welcome.php
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
cmd> GET /welcome.php HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://netwars.ru
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auth.netwars.ru
cmd> Cookie: PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26
cmd> 
hdr> HTTP/1.1 200 OK
hdr> Date: Mon, 17 Apr 2006 15:19:04 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
cookie> PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
hdr> Set-Cookie: PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
hdr> Expires: Thu, 19 Nov 1981 08:52:00 GMT
hdr> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
hdr> Pragma: no-cache
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
RequestDone Error = 0
StatusCode = 200


Вот заголовки общения браузера с сервером ...
значит вначале мы переходим на страницу /enter.php , сервер нам отвечает HTTP/1.1 302 Found (видимо это заголовок авторизации, хотя точно я не знаю) и самое интересное cookie> PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/ я знаю, что можно куки записать куда угодно (например в txt или в базу и использовать. Напомню, что это должен быть скрипт ....)

а потом ещё и Location: /welcome.php .... нас выкидывает на другую страницу и там уже браузер отправляет куки серверу для проверки подленности ... вот это меня и интересует .

вопросы :
1) как всётки куки забрать и записать куданибуть ...
2) как осуществить такой переход ? разбить на 2 скрипта или как ?


Да, совсем забыл спросить, а вот ник и пароль как отправляются ? ... чё то в заголовках я их не увидел ...

   
 
 автор: cheops   (18.04.2006 в 01:29)   письмо автору
 
   для: Oligarx   (17.04.2006 в 19:27)
 

302 - это переадресация на /welcome.php - видите следующий GET уже /welcome.php запрашивает - это реакция на 302 HTTP-код. А пароль и логин скорее всего в сессии хранятся - передаются они первым метдом POST в теле HTTP-документа (Content-Length: 48 - 48 байт) - POST /enter.php HTTP/1.0 примерно так, как это описывается в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1879.

   
 
 автор: Oligarx   (18.04.2006 в 18:06)   письмо автору
 
   для: cheops   (18.04.2006 в 01:29)
 

Объясните пожалуйста как мне из заголовков выдернуть куки и сессию чтоб записать куда-нибуть для дальнейшего использования ...
Да, я ещё не допонял, пароль то нужно отправлять enter.php а затем меня переадресовывает на welcome.php и там уже нужно отсылать сесию (куки) ... и в последующие страницы тоже отправлять куки ?

   
 
 автор: Oligarx   (18.04.2006 в 21:32)   письмо автору
 
   для: Oligarx   (18.04.2006 в 18:06)
 

Неужели кроме cheops'а никто не может ответить ? ... или просто не хочет :((

Вот попробывал тут кой чего ещё написать ...


<?
$hostname
="netwars.ru";
$fp=fsockopen($hostname80$errno$errstr30);
if(!
$fp) echo "$errstr ($errno)<br />\n";
else
{
// Формируем запрос для отправки его серверу
[b]$data "Login="MYNIK"&Password="27252725"&add="%C2%F5%EE%E4."\r\n\r\n";[/b]

$headers "POST /enter.php HTTP/1.0\r\n";
$headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n";
$headers .= "Referer: http://netwars.ru\r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n";
$headers .= "Host: auth.netwars.ru\r\n";
$headers .= "Content-Length: 48\r\n\r\n";



//отправляем запрос
fwrite($fp$headers.$data);

}

header('Location: page2.php');
?>


в выделеной строчке таится ошибка
Parse error: parse error, unexpected T_STRING in z:\home\localhost\www\netwars\page1.php on line 8

как ни пытался её составить ... всё время ругается. Логин и пароль (логин латинскими буквами а пароль цифрами, поэтому не перекодирую ... )

   
 
 автор: Oligarx   (19.04.2006 в 11:17)   письмо автору
 
   для: Oligarx   (18.04.2006 в 21:32)
 

Поднимаю тему ...

   
 
 автор: Oligarx   (19.04.2006 в 15:41)   письмо автору
 
   для: Oligarx   (19.04.2006 в 11:17)
 

...

   
 
 автор: Oligarx   (19.04.2006 в 17:39)   письмо автору
 
   для: Oligarx   (19.04.2006 в 15:41)
 

Ну помогите же ктонибуть :(( ... такое ощущение что меня игнорируют ...

   
 
 автор: Trianon   (19.04.2006 в 18:12)   письмо автору
 
   для: Oligarx   (19.04.2006 в 17:39)
 

$data = "Login=MYNIK&Password=27252725&add=%C2%F5%EE%E4"
и Content-Length поправить.

   
 
 автор: Oligarx   (19.04.2006 в 18:41)   письмо автору
 
   для: Trianon   (19.04.2006 в 18:12)
 

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

   
 
 автор: Trianon   (19.04.2006 в 18:49)   письмо автору
 
   для: Oligarx   (19.04.2006 в 18:41)
 

Примерно так:
$content_length = strlen($data);
$headers .= "Content-Length: $content_length\r\n\r\n"; 

   
 
 автор: Oligarx   (19.04.2006 в 19:01)   письмо автору
 
   для: Trianon   (19.04.2006 в 18:49)
 


$data = "Login="MYNIK"&Password="27252725"&add="%C2%F5%EE%E4."\r\n\r\n";

на эту строчку всё равно ругается :((

проверьте сразу этот код полностью ... может туе ещё где грабли ?


<?
$hostname
="netwars.ru";
$fp=fsockopen($hostname80$errno$errstr30);
if(!
$fp) echo "$errstr ($errno)<br />\n";
else
{
// Формируем запрос для отправки его серверу
$data "Login="xxxxxxxx"&Password="xxxxxx"&add="%C2%F5%EE%E4."\r\n\r\n";
$content_length strlen($data);

$headers "POST /enter.php HTTP/1.0\r\n";
$headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n";
$headers .= "Referer: http://netwars.ru\r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n";
$headers .= "Host: auth.netwars.ru\r\n";
$headers .= "Content-Length: $content_length\r\n\r\n";



//отправляем запрос
fwrite($fp$headers);

}
echo(
$_COOKIE['auth.netwars.ru']);
header('Location: page2.php');
?>


И вы ещё не ответили как куки изъять ? так как у меня или как то подругому ?

   
 
 автор: Trianon   (19.04.2006 в 19:09)   письмо автору
 
   для: Oligarx   (19.04.2006 в 19:01)
 

>$data =
>"Login="MYNIK"&Password="27252725"&add="%C2%F5%EE%E4."
> на эту строчку всё равно ругается :((
Я исправил Вам ошибки в этой строке. Вы вернули всё назад. Не путайте обрамляющие кавычки и кавычки - символы. И не ставьте кавычки там, где они не требуются, а уж тем более - где мешают. В блоке данных POST-запроса они явно мешают. Если конечно у Вас логин и пассворд кавычки не содержат сами собой. Но это а) экзотика явно не Вашего случая, и б) если и вправду появится - потребует специального кодирования кавычек в виде %22

   
 
 автор: cheops   (19.04.2006 в 18:10)   письмо автору
 
   для: Oligarx   (18.04.2006 в 18:06)
 

Об этом можно почитать более подробно в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050

   
 
 автор: Oligarx   (19.04.2006 в 18:57)   письмо автору
 
   для: cheops   (19.04.2006 в 18:10)
 

Видимо в моём случае нужно добавить заголовок
$headers .= "Cookie: name=auth.netwars.ru; PHPSESSID=XXXXXXXXXXX;\r\n";

   
 
 автор: Trianon   (19.04.2006 в 19:04)   письмо автору
 
   для: Oligarx   (19.04.2006 в 18:57)
 

Тогда уж:
$headers .= "Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

   
 
 автор: Oligarx   (19.04.2006 в 19:23)   письмо автору
 
   для: Trianon   (19.04.2006 в 19:04)
 

объясните ещё пожалуйста, как выдрать из ответа сервера cookie> PHPSESSID=f4ff1959ce0b0073c81f76bccf5e2d6d; path=/

из приведённого поста не понял как :((

   
 
 автор: Trianon   (19.04.2006 в 19:37)   письмо автору
 
   для: Oligarx   (19.04.2006 в 19:23)
 

>объясните ещё пожалуйста, как выдрать из ответа сервера
>cookie> PHPSESSID=f4ff1959ce0b0073c81f76bccf5e2d6d; path=/
>
то, что Вы процитировали, Вы в отклике не найдете. Это пометка mini-browser'a которым Вы пользуетесь, вероятно.

Выдирать кукис нужно будет из этой строки:
Set-Cookie: PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
Для этого, наверное, придется заголовок отклика читать построчно (возможно склеивая перенесенные строки полей, о чем обычно забывают) до первой пустой строки, и каждую строку проверять на Set-Cookie. С помощью функций сравнения строк или регулярными выражениями - это уж дело личного вкуса. Найденные строки разбирать на компоненты согласно синтаксису кукисов, и т.д.

   
 
 автор: Oligarx   (20.04.2006 в 00:21)   письмо автору
 
   для: Trianon   (19.04.2006 в 19:37)
 

Да. действительно я пользовался mini-browser'ом ...
можно на примере, как это всё сделать ? просто очень нужно

Да, и самое интересное, покажите пример, как получить заголовки ответа сервера ... а то до сих пор не знаю :(( ...

   
Rambler's Top100
вверх

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