Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » при создании нового объекта cURL теряется сессия

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня есть страница с ссылками, мне нужно проверить куда они ведут (как это делают поисковые боты). Дело в том что при открытии ссылок программно, используя cURL я всегда попадаю в пункт "А" (происходит несколько редиректов), хотя если я это буду делать через браузер то при нажатии на ссылке я уже попаду в пункты "Б", "В" и т.д.  
Я подозреваю что при создании нового объекта cURL теряется сессия, и сервер думает что на сайт зашел новый пользователь. Вопрос: как сделать так что бы при повторном открытии ссылки серверу казалось что это тот пользователь который нажал на первую ссылку и что теперь меня надо отправит в пункты "Б" и "В".
Спасибо за уделенное мне время
С уважением
Delphi
P.S. Попытки воспользоваться

Код:
curl_setopt($this->ch, CURLOPT_COOKIE, $this->Cookie);
 
curl_setopt($this->ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($this->ch, CURLOPT_COOKIEFILE, "my_cookies.txt");

 
Ни к чему не привели.

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 18:51 26-05-2005 | Исправлено: Delphi6, 19:32 26-05-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6

Цитата:
Ни к чему не привели.

файл создается? в нем что то есть?  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:37 26-05-2005
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
файл создается? в нем что то есть?

На удивление нет (думаю он должен создаваться в том же каталоге, где находится сам скрипт?), хотя дебагером видно что в header-е передается команда Set cookie. Все очень и очень странно.
 
Вот какие результаты я получил после длительных тестирований:
1) Сначала попытался вручную сохранять кукисы передаваемые в header-е и в дальнейшем передавать при запросе. Данная процедура ни каких результатов не дала. Скприпт по прежнему отсылал меня в точку "А".
2) Найдя в Интернете документацию о использовании:

Код:
curl_setopt($this->ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($this->ch, CURLOPT_COOKIEFILE, "my_cookies.txt");

попытал счастья и с такой структурой, но результат прежний.
 
Повторюсь: мне нужно получить следующий результат - при вызове скрипта (click по ссылке) redirec.php я должен попасть в пункты "Б", "В" и т.д. все кроме пункта "А", в последний я попадаю при первом click-е.
 
Возможное решение: Как я подозреваю есть всего два варианта как скрипт проверяет кокой раз я вызываю его (кликаю по ссылке): Cookie и PHPSessionID.  
Думаю есть смысл передать значение PHPSessionID методом POST. Вот только не знаю как получить его значение? Хотя я не уверен что данный скрипт проверяет значения сессии так как в header-е PHPSessionID нету. Наблюдения показали что если в header-е нету значение PHPSessionID значит сессия не была запушена (session_start) РНР скриптом.

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 22:16 26-05-2005
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот привожу отрывок из анализа пакетов etherial-а (снифера). Красным кружочком обведен та переменная, исходя из значения которой скрипт определяет куда он должен переслать пользователя.
   
Из анализа моего скрипта, этот параметр всегда равен ct_clks=0, не смотря на то что я включил поддержку cookie. Может кто подскажет в чем может быть загвоздка, что я не учитываю?

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 16:14 27-05-2005 | Исправлено: Delphi6, 14:40 28-05-2005
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А ошибка была элементарная
Вместо конструкции
curl_setopt($this->ch, CURLOPT_COOKIE, $Cookie_123456789);
надо было пользоваться
curl_setopt($this->ch, CURLOPT_COOKIE, "$Cookie_123456789");
Оказывается кавычки должны бить, в противном случае ни фига не работает
 
Cheery большое спасибо за помощь, проблема решилась! Вот только не могу понять почему не работает с файлами? И еще одна вещь, буду ли я прав утверждая что PHPSESSID передается через куки?

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 16:20 28-05-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
curl_setopt($this->ch, CURLOPT_COOKIE, $Cookie_123456789);  
надо было пользоваться  
curl_setopt($this->ch, CURLOPT_COOKIE, "$Cookie_123456789");
Не верю (С) Станиславский. Подробности можно узнать в мануале, в разделе "строки".
Цитата:
буду ли я прав утверждая что PHPSESSID передается через куки?
PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 17:12 28-05-2005 | Исправлено: SiMM, 17:13 28-05-2005
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Не верю (С) Станиславский. Подробности можно узнать в мануале, в разделе "строки".

Хотите верьте а хотите нет! Я просто случайно решил проверить, не нужно ли указать кавычки, так как и интернете есть примеры

Код:
 curl_setopt($this->ch, CURLOPT_COOKIE, "k=1;j=3");

Я и подумал а может надо кавычки и оказался прав
 
Спасибо за хорошую документацию, сейчас читаю

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 19:38 28-05-2005 | Исправлено: Delphi6, 19:41 28-05-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Хотите верьте а хотите нет!
Походу вы просто не понимаете, что творите. Хорошо. Вот наглядный пример:
Код:
$Cookie_123456789 = 'бла-бла-бла';
var_dump($Cookie_123456789);
var_dump("$Cookie_123456789");
Задачка на тему "найдите два отличия".
Затем можете наконец обратиться к мануалу за разъяснениями.
http://se.php.net/manual/ru/language.types.string

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 20:53 28-05-2005
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да я не спорю с вами, просто это надо отнести к особенности PHP, как например, тупость PHP когда он отказался брать функцию

Код:
curl_setopt($this->ch, CURLOPT_HEADERFUNCTION, array($this,'read_header'));

вместо стандартного, более логичного

Код:
curl_setopt($this->ch, CURLOPT_HEADERFUNCTION, 'this->read_header');

Ну и на самый крайний случай, я пришлю вам исходник и вы сами убедитесь что один работает а другой нет И черт его знает почему!
П.С. Но все же, дабы рассеять подозрения я перепроверю скрипт, возможно вы правы.
Кстати, дока по сессиям супер, я даже не знал что можно и методом GET и через кукисы передавать, что можно методом POST я узнал методом научного тыка.
Теперь уже намного лучше представляю процесс происходящий при запросе пользователем страницы

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 22:05 28-05-2005 | Исправлено: Delphi6, 22:10 28-05-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Теперь уже намного лучше представляю процесс происходящий при запросе пользователем страницы
PHP FAQ: Самые основы. Просмотр обмена HTTP заголовками для полноты ощущений, думаю, будет полезно. Сам для этих целей пользую proxomitron - сниффер и баннерорезка в одном флаконе.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 22:17 28-05-2005
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Откуда вы такую хорошую документацию достаете? Да еще на русском. Теперь есть что почитать в выходные. А на счет снифера, я к etherial-у привык, хотя и вами предложены обязательно попробую. Благодарю вас за помощь и уделенное мен время

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 22:28 28-05-2005
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » при создании нового объекта cURL теряется сессия


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru