Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с Кукисами. 
:(
    Опции темы
Vbif
Дата 4.9.2005, 05:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть подпроцедура достающая значение из предварительно созданного кукиса.
Код

sub Get_Cookie {
%Info = fetch CGI::Cookie;
$id = $Info{"Session"}->value;
                 }

Она вызываеться во множестве других подпроцедур, для использования переменной $id.
Так вот, нужно вызвать др. подпроцедуру, в случае, если кукиса нету. В подпроцедуре, банальный редирект, на то что сессия истекла.

Пробовал, вот так:

Код

sub Check_Cookie {
%Info = fetch CGI::Cookie;
$id = $Info{"Session"}->value;

  if (defined($if))

      {
             return $id;
                               }

  else

      {
             die; &Redirect;
                                       }

                                                 }


Но, не работает smile

Заранее всех благодарю.


  Вверх
Vbif
Дата 4.9.2005, 05:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Упс, извиняюсь, не до конца разобрался с кнопочкой КОД smile
  Вверх
sharq
Дата 4.9.2005, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Vbif на самом деле, ты все правильно делал, только убери die перед вызовом подпрограммы. smile
Но я сделал бы так:
Код

sub Check_Cookie {
  ...
  return ( defined $id ? $id : 0);
}


И затем в программе, где вызывается эта функция:
Код

my $get_id = Check_Cookie() || Check_Param() || undef;

где Check_Param() - функция проверки параметров переданных программе (если кукисы отключены).
или
Код

my $get_id = Check_Cookie();
if (defined $get_id) {
  My_Header();
  My_Print("You have cookie: $get_id");
} else {
  Redirect();
}


smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Vbif
Дата 4.9.2005, 17:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сенкс, почти заработало, но писало в логи

Can't call method "value" on an undefined value at

Что решилось довольно банально

Код

$id = $Info{"Session"}->value if defined(%Info);

  Вверх
sharq
Дата 4.9.2005, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Vbif
Цитата(Vbif @ 4.9.2005, 18:53)
Can't call method "value" on an undefined value at

Что решилось довольно банально

$id = $Info{"Session"}->value if defined(%Info);

Это не всегда сработает, лучше:
Код

$id = $Info{"Session"}->value if %Info && defined $Info{"Session"};


smile



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
sharq
Дата 4.9.2005, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28




И это тоже не спасет. smile
Если у $Info{"Session"} метода нет, то будет ошибка.

Если ты хочешь max избежать ошибки, то

Код

my %Info = fetch CGI::Cookie;
my $sess = $Info{"Session"} if exists $Info{"Session"} ;
# ты знаешь, что если $sess - сужествует, то это по любому ссылка на объект, 
# у кот есть метод value, поэтому проверяй существование $sess
my $id = $sess->value() if defined $sess;


smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Vbif
Дата 5.9.2005, 01:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Снимаю шляпу smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.