С нами с 30.06.03
Сообщения: 794
Рейтинг: 202
|
Добавлено: 27/12/04 в 13:18 |
привет=))))
подскажите как извлеч куки из ответа сервера и как при следующем запросе отправить эту куку назад
всю ночь пытался это сделать. мимо=)) люди, помогите=)
заранее спасибо=))
|
|
Я бы взял частями, но мне нужно сразу=))
|
0
|
|
|
Генератор случайных букв
С нами с 01.02.04
Сообщения: 1014
Рейтинг: 455
|
Добавлено: 27/12/04 в 14:32 |
Alpha_Juno писал: | привет=))))
подскажите как извлеч куки из ответа сервера и как при следующем запросе отправить эту куку назад
всю ночь пытался это сделать. мимо=)) люди, помогите=)
заранее спасибо=)) |
Перечитал пять раз, но так и не понял чего именно ты хочешь сделать
Преположения: скрипт на твоем сайте должен установить куку на машину серфера и потом проверить ее?
<?php
setcookie("название куки", "значение куки", $expiration, $path, $domain);
?>
Хде: $expiration - дата истечения куки (можно через time. e.g. $expiration=time()+7200; // - установит истечение через 2 часа
$path - путь на сайте где кука действует. Вернее начиная с какого пути. Т.е. $path="/" - для всего домена, ="/botva/" - для каталога "Ботва" и ниже.
$domain - ну это понятно. Метка что за домен куку подставил.
Чтение куки:
<?php
$cookie_value=$_COOKIE["название куки"];
// или:
$cookie_value=$HTTP_COOKIE_VARS["название куки"];
?>
Т.е. тут ты сможешь считать значение куки.
ПрЮмер.
Поставим юзеру куку, что он выбрал "Blondes"
<?php
setcookie("girl_of_dream", "Blondes", time()+68400, "/");
/* Устанавливаем, что любимыми тетками серфера являются Блондинки. Но через сутки кука снимается. Действие - на весь наш домен*/
?>
ТЕперь провереяем наличие кук
<php?
// Есть ли кука вообще?
if (isset($_COOKIE['girl_of_dream']))
// Ага. Нашлась. А чему равна?
{
// Действуем в зависимости от значения
if ($_COOKIE['girl_of_dream']=="Blondes") { // dosomething}
if ($_COOKIE['girl_of_dream']=="Brunettes") { // dosomething}
} else {
// Кааак? Нету нашей куки? Бардак! Поставить!
setcookie("girl_of_dream", "Blondes", time()+68400, "/");
}
?>
|
|
|
|
С нами с 10.09.03
Сообщения: 1313
Рейтинг: 513
|
Добавлено: 27/12/04 в 14:39 |
Ты уж тему заведи: Альфа Джуно делает спамилку...
А чего снупи те не приглянулси?
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 27/12/04 в 15:09 |
Вацлав: Он хочет с пхп скрипта выдрать страницу левого сервера вместе с кукисом.
Alpha_Juno:
1. Пихаем в сокет:
GET /document.html HTTP/1.1
Host: domain.com
Referer: http://google.com
2. Читаем из сокета ответ -> $string
3. $a=explode("\r\n\r\n",$string,2)
$a[0] - хидеры
$a[1] - тело ответа
4. $headers=explode("\r\n",$a[0]);
$headers - массив из элементов "Хидер: значение"
При этом в $headers[0] код ответа сервера (типа его за хидер не принимать)
5. Ищем кукисы в ответе
$cookies=array();
for (reset(headers);list(,$header)=each($headers);)
{
$header_array=explode(':',$header,2);
//скипуем ответ сервера
if (count($header_array)<2) continue;
//Ловим куку
if (strtolower(trim($header_array[0]))=='set-cookie') $cookies[]=trim($header_array[1]);
}
Массив $cookies обрабатывай ужо сам
|
|
|
|
С нами с 17.02.03
Сообщения: 355
Рейтинг: 316
|
Добавлено: 27/12/04 в 23:30 |
Pentarh писал: |
1. Пихаем в сокет:
GET /document.html HTTP/1.1
|
Pentarh никогда не сталкивался с тем что иногда GET /document.html HTTP/1.1 не проходит, а проходит GET http://domain.com/document.html HTTP/1.1? Я как раз с этим сейчас столкнулся, и очень хотелось бы услышать, что об этом думают знающие люди, может у меня просто руки кривые?
|
|
|
|
С нами с 27.02.03
Сообщения: 873
Рейтинг: 402
|
Добавлено: 28/12/04 в 02:28 |
Student писал: | Pentarh никогда не сталкивался с тем что иногда GET /document.html HTTP/1.1 не проходит, а проходит GET http://domain.com/document.html HTTP/1.1? Я как раз с этим сейчас столкнулся, и очень хотелось бы услышать, что об этом думают знающие люди, может у меня просто руки кривые? |
Host: у тебя просто в заголовках не указан наверное.
Делать так:
Host: domain.com
Тогда при кошерном сокете GET /document.html HTTP/1.1 как по маслу пройдет.
|
|
|
|
С нами с 30.06.03
Сообщения: 794
Рейтинг: 202
|
Добавлено: 28/12/04 в 03:00 |
Всем большое спасибо=)
2Вацлав это тоже пригодиться=)
2samlowry нет это не спамилка, спамилка у меня есть и отлично работает по 2 суток через шелл, где то по 30 гетов в секунду делает=)) Снупи сколько раз пытался поставить да что то он выдает ошибку, хотя делаю как в примере написано.
2Pentarh, то что нужно. Респект!!!
|
|
Я бы взял частями, но мне нужно сразу=))
|
0
|
|
|
С нами с 30.06.03
Сообщения: 794
Рейтинг: 202
|
Добавлено: 28/12/04 в 05:55 |
И снупи заработал=) видно баг пофиксили=)
|
|
Я бы взял частями, но мне нужно сразу=))
|
0
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 28/12/04 в 10:12 |
Student писал: | Pentarh никогда не сталкивался с тем что иногда GET /document.html HTTP/1.1 не проходит, а проходит GET http://domain.com/document.html HTTP/1.1? Я как раз с этим сейчас столкнулся, и очень хотелось бы услышать, что об этом думают знающие люди, может у меня просто руки кривые? |
GET http://domain.com/document.html HTTP/1.1 - это так обращаются к проксику, но не к серверу (протокол HTTP 1.0 вроде). По версии протокола HTTP 1.1 к серверу обращаются как сказал perlmaster (по RFC 2616 - протокол HTTP) с явным указанием хидера "Host".
Т.е. самой минимальный набор хидеров что можно послать на запрос страницы http://domain.com/path/to/document.html это
МЕТОД /path/to/document.html HTTP/1.1
Host: domain.com
Где МЕТОД = POST, GET, HEAD (в основном, но существуют и другие методы обращения как например PUT, DELETE и т.д.).
Чтобы сервер не реагировал неправильно на всякие хотлинки, еще добавлять следует поле (типа откуда пришел):
Referer: http://www.google.com
(ну или какой нить другой сайт, который блокироваться не должен по идее)
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 28/12/04 в 10:21 |
О, кстати. В пхп я долго боролся с проблемой и не мог понять в чем же дело.
Вот он открыл сокет, послал запрос и сидит, читает полминуты или более (на канале 100 мбит). В общем, на некоторых серваках (на большинстве), апач делает по дефалту Connection Keep-Alive. Т.е. после прочтения ответа, удаленный апач НЕ закрывает сокет, ждет дальнейших запросов и закрывает его по таймауту. Это делается чтобы на каждую картинку или css файл содранной страницы не открывать заново кучу сокетов и экономить память сервера.
Добавляем к запросу еще один хидер:
Connection: close
Все. Читает мгновенно.
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 28/12/04 в 11:46 |
Используйте curl функции и не парьтесь .
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 28/12/04 в 11:55 |
Curl хорош для своих проектов, когда ты можешь пнуть саппорт поставить тебе curl.
А вот для публичных не канает. Что говорить, еcли некоторые клиенты на "access to crontab" говорят что это "blondie thing"
|
|
|
|
С нами с 30.06.03
Сообщения: 794
Рейтинг: 202
|
Добавлено: 28/12/04 в 11:56 |
Pentarh писал: | Чтобы сервер не реагировал неправильно на всякие хотлинки, еще добавлять следует поле (типа откуда пришел):
Referer: http://www.google.com
(ну или какой нить другой сайт, который блокироваться не должен по идее) |
А еще лучше в рефер засунуть сам хост на который отправлен запрос=))
|
|
Я бы взял частями, но мне нужно сразу=))
|
0
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 28/12/04 в 12:04 |
тоже правильно
|
|
|
|
С нами с 17.02.03
Сообщения: 355
Рейтинг: 316
|
Добавлено: 28/12/04 в 18:32 |
Все упомянутые здесь хидеры уже были, но всё равно работало не так как надо. Помогло только “всё стереть и написать заново” где и какая ошибка была я так и не понял. Всем спасибо, проблема решена.
|
|
|
|