Реклама на сайте Advertise with us

Выдрать куку из ответа сервера и потом отправить (php)

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 30.06.03
Сообщения: 794
Рейтинг: 202

Ссылка на сообщениеДобавлено: 27/12/04 в 13:18       Ответить с цитатойцитата 

привет=))))

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

всю ночь пытался это сделать. мимо=)) люди, помогите=)
заранее спасибо=))

Я бы взял частями, но мне нужно сразу=))

0
 

Генератор случайных букв

С нами с 01.02.04
Сообщения: 1014
Рейтинг: 455

Ссылка на сообщениеДобавлено: 27/12/04 в 14:32       Ответить с цитатойцитата 

Alpha_Juno писал:
привет=))))
подскажите как извлеч куки из ответа сервера и как при следующем запросе отправить эту куку назад
всю ночь пытался это сделать. мимо=)) люди, помогите=)
заранее спасибо=))

Перечитал пять раз, но так и не понял чего именно ты хочешь сделать icon_smile.gif
Преположения: скрипт на твоем сайте должен установить куку на машину серфера и потом проверить ее?
<?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, "/");
}
?>

1
 



С нами с 10.09.03
Сообщения: 1313
Рейтинг: 513

Ссылка на сообщениеДобавлено: 27/12/04 в 14:39       Ответить с цитатойцитата 

Ты уж тему заведи: Альфа Джуно делает спамилку...
А чего снупи те не приглянулси?

1
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 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 обрабатывай ужо сам icon_smile.gif

1
 



С нами с 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? Я как раз с этим сейчас столкнулся, и очень хотелось бы услышать, что об этом думают знающие люди, может у меня просто руки кривые?

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 как по маслу пройдет.

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
Сообщения: 17156
Рейтинг: 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
(ну или какой нить другой сайт, который блокироваться не должен по идее)

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 28/12/04 в 10:21       Ответить с цитатойцитата 

О, кстати. В пхп я долго боролся с проблемой и не мог понять в чем же дело.

Вот он открыл сокет, послал запрос и сидит, читает полминуты или более (на канале 100 мбит). В общем, на некоторых серваках (на большинстве), апач делает по дефалту Connection Keep-Alive. Т.е. после прочтения ответа, удаленный апач НЕ закрывает сокет, ждет дальнейших запросов и закрывает его по таймауту. Это делается чтобы на каждую картинку или css файл содранной страницы не открывать заново кучу сокетов и экономить память сервера.

Добавляем к запросу еще один хидер:

Connection: close

Все. Читает мгновенно.

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 28/12/04 в 11:46       Ответить с цитатойцитата 

Используйте curl функции и не парьтесь .

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 28/12/04 в 11:55       Ответить с цитатойцитата 


Curl хорош для своих проектов, когда ты можешь пнуть саппорт поставить тебе curl.
А вот для публичных не канает. Что говорить, еcли некоторые клиенты на "access to crontab" говорят что это "blondie thing" icon_smile.gif

0
 



С нами с 30.06.03
Сообщения: 794
Рейтинг: 202

Ссылка на сообщениеДобавлено: 28/12/04 в 11:56       Ответить с цитатойцитата 

Pentarh писал:
Чтобы сервер не реагировал неправильно на всякие хотлинки, еще добавлять следует поле (типа откуда пришел):
Referer: http://www.google.com
(ну или какой нить другой сайт, который блокироваться не должен по идее)


А еще лучше в рефер засунуть сам хост на который отправлен запрос=))

Я бы взял частями, но мне нужно сразу=))

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 28/12/04 в 12:04       Ответить с цитатойцитата 

тоже правильно

0
 



С нами с 17.02.03
Сообщения: 355
Рейтинг: 316

Ссылка на сообщениеДобавлено: 28/12/04 в 18:32       Ответить с цитатойцитата 

Все упомянутые здесь хидеры уже были, но всё равно работало не так как надо. Помогло только “всё стереть и написать заново” где и какая ошибка была я так и не понял. Всем спасибо, проблема решена.

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »