Http & Php
1. Получить куку (даже две, а может и три).
2. При последующих соединениях из скрипта, использовать эти куки при отправке http запроса того, что мне нужно.
Как написать http запрос?? много читал и про headers и про setcookies,http/1.1 итд..понял всё,но нет практики.
Как это всё реализовать на php?
Запоминаешь то что получил, и при последующем обращнии добавляешь в HTTP запрос поле "Cookie", например:
Сookie: PHPSESSID=8475748475748
При первом соединении (например, с помощью fsockopen()) считываешь о обрабатываешь содержимое поля "Set-Cookie" HTTP заголовка ответа сервера.
Запоминаешь то что получил, и при последующем обращнии добавляешь в HTTP запрос поле "Cookie", например:
Сookie: PHPSESSID=8475748475748
Напиши пример
[COLOR=blue] mike [/COLOR] а ты не задумывался, где он возЪмёт куки???
Проще всего запустить снифер и посмотреть, как все происходит на практике. Узнаешь много интересного :)
$fp = fsockopen ("www.host.ru", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
\n";
}
else {
$ans="";
fputs ($fp, "POST /login.php HTTP/1.0\r\n");
fputs ($fp, "Host: www.host.ru\r\n");
fputs ($fp, "Connection: Keep-Alive\r\n");
fputs ($fp, "\r\n");
fputs ($fp, "login=login&password=password");
while (!feof($fp)) $ans.=fgets ($fp,128);
$pos=strpos($ans,"Set-Cookie:");
if ($pos) {
$cookie=substr($ans,$pos+11);
list($cookie)=explode($cookie,";");
$cookie=trim($cookie);
}
$ans="";
fputs ($fp, "GET /page.php HTTP/1.0\r\n");
fputs ($fp, "Host: www.host.ru\r\n");
fputs ($fp, "Cookie: ".$cookie."\r\n");
fputs ($fp, "Connection: Close\r\n");
fputs ($fp, "\r\n");
while (!feof($fp)) $ans.=fgets ($fp,128);
print $ans
fclose ($fp);
}
?>
писалось прямо в форуме. код не рабочий, но показывает принцип.
Работает только при одной Cookie, и не проверяет валидность по домену и времени.
[COLOR=blue] mike [/COLOR] а ты не задумывался, где он возЪмёт куки???
задумывался, из HTTP заголовка ответа сервера.
$fp = fsockopen ("www.host.ru", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
\n";
}
else {
$ans="";
fputs ($fp, "POST /login.php HTTP/1.0\r\n");
fputs ($fp, "Host: www.host.ru\r\n");
fputs ($fp, "Connection: Keep-Alive\r\n");
fputs ($fp, "\r\n");
fputs ($fp, "login=login&password=password");
while (!feof($fp)) $ans.=fgets ($fp,128);
$pos=strpos($ans,"Set-Cookie:");
if ($pos) {
$cookie=substr($ans,$pos+11);
list($cookie)=explode($cookie,";");
$cookie=trim($cookie);
}
$ans="";
*Здесь
fputs ($fp, "GET /page.php HTTP/1.0\r\n");
fputs ($fp, "Host: www.host.ru\r\n");
fputs ($fp, "Cookie: ".$cookie."\r\n");
fputs ($fp, "Connection: Close\r\n");
fputs ($fp, "\r\n");
while (!feof($fp)) $ans.=fgets ($fp,128);
print $ans
fclose ($fp);
}
?>
Всё понятно...но тебе не кажеться что надо повторно сделать fsockopen в "Здесь"
Всё понятно...но тебе не кажеться что надо повторно сделать fsockopen в "Здесь"
После обработки запроса соединение не обязательно обрывается.
Точнее если Connection: Close, то обрывается, а если Connection: Keep-Alive, то нет.
p.s. есть исключения, почитай RFC2068
После обработки запроса соединение не обязательно обрывается.
Точнее если Connection: Close, то обрывается, а если Connection: Keep-Alive, то нет.
p.s. есть исключения, почитай RFC2068
оки..всё ясно...ещё один момент:
напрмер есть закрытый доступ к странице и на главной странице есть формы(логин,пароль)
и когда ты заходишь(авторизируешся) то в адрессной строке есть такая фишка
example.com/inf.pl?920391292395
Я так понимаю что эти цифры назначаються каждому кто авторизируется...тоесть всё работает не с куки..так как заходя повторно на главную стр..нужно опять вводить свои данные...
Что нужно сделать чтоб скрипт зашел один раз..и собирал инфу..