Forum Webscript.Ru

Программирование => Perl => Тема начата: Intruder от 15 Декабря 2004, 22:44:50

Название: проблема с использованием CGI::Cookie
Отправлено: Intruder от 15 Декабря 2004, 22:44:50
Приветсвую вас господа!
Если кто работал с этим модулем или кто считает, что его использование плохой вариант, прошу ответить.
Суть проблемы:
Пытаюсь считывать кукесы. Если вызываю свой скрипт через формы на странице(IE), то всё работает нормально. Если пытаюсь вызвать скрипт через другие скрипты, то нефига не работает. Выдаёт "Can\'t call method "value" on an undefined value at reg.pl line 36"(в примере кода вторая строчка). Главный скрипт вызывается на html-странице через SSI, потом ещё через две функции вызывается скрипт чтения кукесов.
%cookies = fetch CGI::Cookie;
my($c_login)= $cookies{\'login\'}->value;
my($c_password)=$cookies{\'password\'}->value;

Мои соображения сходятся на том, что модуль "не понимает", какие именно кукесы ему использовать...Хотя хз. А может всё дело в вызове скриптов через SSI?
Вопрос простой. Что делать?
Название: проблема с использованием CGI::Cookie
Отправлено: Green Kakadu от 15 Декабря 2004, 23:11:39
Цитировать
Intruder:
 Если пытаюсь вызвать скрипт через другие скрипты,

а как?
Цитировать
Intruder:
то модуль "не понимает", какие именно кукесы ему использовать

он их не получает.
соответственно $cookies{\'login\'} = undef
Название: проблема с использованием CGI::Cookie
Отправлено: Intruder от 15 Декабря 2004, 23:31:42
Вызываю примерно так:
Через SSI вызываю скрипт index.pl, который вызывает &show(); и т.д. ещё несколько раз. В конце концов выхожу на:
sub sh_in_login()
{
my(%MEMBERS)=&find_reg_login();
}
sub find_reg_login()
{  
  %cookies = fetch CGI::Cookie;
  my($c_login)= $cookies{\'login\'}->value;#здесь не работает
}

Вначале файла определены
use CGI qw/:standard/;
use CGI::Cookie;
Цитировать
Green Kakadu:
он их не получает.
соответственно $cookies{\'login\'} = undef

Эм...А... А как это "заработать"? =)
Название: проблема с использованием CGI::Cookie
Отправлено: NeoNox от 16 Декабря 2004, 12:03:04
Цитировать
Intruder:
А может всё дело в вызове скриптов через SSI?

set-cookie - не работают если скрипт вставлен через SSI.
Куки выставляются вместе с хедером, а не с телом ответа.
В данном случае, хедер уже отдан и куки видимо пролетают.
Название: проблема с использованием CGI::Cookie
Отправлено: Phoinix от 16 Декабря 2004, 17:42:28
NeoNox
Позволю себе не согласиться.
set-cookie - действительно не работает через SSI, но вопрос все-таки о их чтении, а не установке...

А чтение Cookies через SSI - проходит на ура.

А вот если в куках неправильно указан domain или path, то Cookie не только скриптом читаться не будут...
Название: проблема с использованием CGI::Cookie
Отправлено: Green Kakadu от 16 Декабря 2004, 18:00:49
Цитировать
Phoinix:
действительно не работает через SSI, но вопрос все-таки о их чтении, а не установке...

возможно, он не смог их поставить, и потом нечего было читать
Название: проблема с использованием CGI::Cookie
Отправлено: NeoNox от 16 Декабря 2004, 18:03:03
Блин, не вчитался.
Intruder
замени
sub find_reg_login()
{  
  %cookies = fetch CGI::Cookie;
  my($c_login)= $cookies{\'login\'}->value if ($cookies{\'login\'});
}
Название: проблема с использованием CGI::Cookie
Отправлено: Intruder от 16 Декабря 2004, 19:51:12
Ты прав! Защита работает. Теперь всё грузится, вот только правда кукесы не читаются. =(
До того читались очень даже(без SSI конечно). Попробую ещё побаловаться с установкой кукесов.
Но дело скорее всего не в записи кукесов. Про хейдеры, не знаю что это и как с этим работать. Буду искать инфу.
З.Ы. Попробую справится без SSI. Щас придумал как. Всё равно спасибо!