imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 03.06.2004, 19:52     # 1
Diamoon
Guest
 
Сообщения: n/a

Проблема с получением cookie

Сделал на сайте такую схему:
посетитель регистрируется, ему устанавливаются куки, после этого он может воспользоваться разделом. Тут все нормально, но если войти в этот раздел без регистрации (т.е. если куки не установлены) скрипт должен выдать "незарегистрирован", но браузер рисует пустую страницу.

Код такой:

if($ENV{'HTTP_COOKIE'}){
%cookies = fetch CGI::Cookie;
$str = $cookies{'name'}->value;
}
else {$str="guest";}

Подскажите, в чем ошибка?
 
Старый 04.06.2004, 01:40     # 2
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Я думаю что проблема в том что $ENV{'HTTP_COOKIE'} почти всегда выдает true, даже если конкретно $cookies{'name'}->value ничего и не содержит... попробуй, определять по конкретной переменной, ну например так (или что-то вроде):
Код:
%cookies = fetch CGI::Cookie;
$str = $cookies{'name'}->value;
if($str){
}
else {$str="guest";}
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 04.06.2004, 09:05     # 3
Diamoon
Guest
 
Сообщения: n/a

Цитата:
Сообщение от Hubbitus
Я думаю что проблема в том что $ENV{'HTTP_COOKIE'} почти всегда выдает true, даже если конкретно $cookies{'name'}->value ничего и не содержит... попробуй, определять по конкретной переменной, ну например так (или что-то вроде):
Код:
%cookies = fetch CGI::Cookie;
$str = $cookies{'name'}->value;
if($str){
}
else {$str="guest";}
Я пробовал и такой код, не работает. Дело в том, что когда скрипт встречает $ENV{'HTTP_COOKIE'} и если куки не были установлены, он просто не выполняет оставшийся код, и получается пустая страница
 
Старый 04.06.2004, 12:57     # 4
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Diamoon:
Я пробовал и такой код, не работает.
Почему, в чем ошибка?
Цитата:
Diamoon:
Дело в том, что когда скрипт встречает $ENV{'HTTP_COOKIE'} и если куки не были установлены, он просто не выполняет оставшийся код, и получается пустая страница
Наверное, только в моем примере он не втречает нигде $ENV{'HTTP_COOKIE'}, при чем здесь это?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 04.06.2004, 16:36     # 5
Diamoon
Guest
 
Сообщения: n/a

Если бы я знал где ошибка я бы на форум не обратился
Код:
 
%cookies = fetch CGI::Cookie;
$str = $cookies{'name'}->value;
if($str){
}
else {$str="guest";};
Если куки не были установлены он на этом куске останавливается и дальнейший код не выполняет, выдается пустая страница.
Я подумал сделать проверку на существование переменной
Код:
if($ENV{'HTTP_COOKIE'})
{
...
}
тоже самое
 
Старый 04.06.2004, 17:18     # 6
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Вот работающий код, надеюсь все понятно Если нет, спрашивай.
Код:
#!/usr/bin/perl
use CGI qw(:all);

if (defined cookie('name')) {
print header;
$str=cookie('name');
}
else {
$test_cookie=cookie(-name => 'name',
-value => 'My Name',
-expires => '+2m' );
print header(-cookie => $test_cookie);
$str="Guest";
}
print $str;
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 04.06.2004, 18:09     # 7
Diamoon
Guest
 
Сообщения: n/a

Спасибо, теперь работает.
Только все равно непонятно, почему прежний код
Код:
use CGI::Cookie;
if($ENV{'HTTP_COOKIE'}){
%cookies = fetch CGI::Cookie;
$str = $cookies{'name'}->value;
}
else {$str="guest";}
не работал

Цитата:
Я думаю что проблема в том что $ENV{'HTTP_COOKIE'} почти всегда выдает true, даже если конкретно $cookies{'name'}->value ничего и не содержит...
Код:
$str=$ENV{'HTTP_COOKIE'};
if($str ne ""){
%cookies = fetch CGI::Cookie;
$str = $cookies{'name'}->value;
}
else {$str="guest";}
По идее должно работать, но тоже не работает.
 
Старый 04.06.2004, 18:28     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Незнаю, я вообще не любитель так мучаться, просто ты спросил я помог...
Я пишу на ПХП обычно чтобы какраз не думать о таких геморроях.... (никого не хочу обидеть, и не надо плиз здесь со мной спорить натему "PHP vs PERL"...)
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 16:28.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.