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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Cookie Запись, проверка, выход 
:(
    Опции темы
MaxPayne
Дата 1.4.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

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



Для установки куков использую

my $query = CGI->new;
print $query->header(-cookie => $query->cookie(-name => ses, -value => $ses, -expires =>  '+1M'));
---------------------------------------------------------
Для проверки использую

$q = CGI->new();
$vc = $q->cookie('ses');

Если $vc чтото есть - значит кука есть.
-----------------------------------------------------------
Для выхода использую

$q = CGI->new();
$vc = $q->cookie('ses');

$dbh = DBI -> connect("DBI:mysql:***:localhost", "", "");
$dbh -> do("UPDATE user set temp='' WHERE temp = '$vc'");
$dbh -> disconnect();

$q = CGI->new;
$cookie = $q->cookie(-name => ses, -value => $vc, -expires => '-1m');
-----------------------------------------------------------
Все ли правильно здесь описано? Выхода из куков не происходит. Из базы стирается ключ, но сама кука остается. Я писал срок и -1М и now, как где то было уже описано. Но не получается. В чем может быть проблема.
PM MAIL WWW ICQ   Вверх
Itsys
Дата 1.4.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



print $query->header(-cookie => $query->cookie(-name => ses, -value => $vc, -expires =>  'now'));

Куки ты создал, а в заголовок кто его будет запихивать?


Это сообщение отредактировал(а) Itsys - 1.4.2008, 16:59
PM MAIL WWW Skype   Вверх
MaxPayne
Дата 2.4.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

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



Т.е. для выхода с куков добаляю в конце строку (выделена жирным)

$q = CGI->new();
$vc = $q->cookie('ses');

$dbh = DBI -> connect("DBI:mysql:***:localhost", "", "");
$dbh -> do("UPDATE user set temp='' WHERE temp = '$vc'");
$dbh -> disconnect();

$q = CGI->new;
$cookie = $q->cookie(-name => ses, -value => $vc, -expires => '-1m');
print $query->header(-cookie => $query->cookie(-name => ses, -value => $vc, -expires =>  'now')); 

или 

print $q->header(-cookie => $q->cookie(-name => ses, -value => $vc, -expires =>  'now')); 


PM MAIL WWW ICQ   Вверх
Itsys
Дата 2.4.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



ну конечно вторую, это я посто копировал и не посмортел исходную переменную  smile 
PM MAIL WWW Skype   Вверх
MaxPayne
Дата 3.4.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

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



Спасибо.
PM MAIL WWW ICQ   Вверх
MaxPayne
Дата 10.4.2008, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

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



Блин выход запарил - не выходит. Уже и браузер закрыл, открыл - не помогает.
Может кто подскажет. ПРоблем с входом и проверкой на наличие нет.
ПРивожу код скритп по выходу.

Код

#!/usr/bin/perl
use CGI qw(:all);
use DBI;

$q = CGI->new();
$vc = $q->cookie('ses');

#$dbh = DBI -> connect("DBI:mysql:***:localhost", "", "");
#$dbh -> do("UPDATE user set temp='' WHERE temp = '$vc'");
#$dbh -> disconnect();

print $q->header(-cookie => $q->cookie(-name => ses, -value => $ses, -expires =>  '-1M'));

print "<script language='javascript'> location.href='http://www.***.ru/' </script>";
exit;

PM MAIL WWW ICQ   Вверх
GoDleSS
Дата 10.4.2008, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 2



MaxPayne, редирект проще сделать в том же хидере, зачем жабаскрипт пуляешь?!
--------------------
It's a nice day to die my friend!
PM MAIL WWW ICQ   Вверх
MaxPayne
Дата 11.4.2008, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

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



Поскажите как - сделаю. Но главная проблема что куки не стираются.
PM MAIL WWW ICQ   Вверх
Itsys
Дата 12.4.2008, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



Попробуй так:
Код

#!/usr/bin/perl
use CGI qw(:all);
use DBI;

$q = CGI->new();
$vc = $q->cookie('ses');

#$dbh = DBI -> connect("DBI:mysql:***:localhost", "", "");
#$dbh -> do("UPDATE user set temp='' WHERE temp = '$vc'");
#$dbh -> disconnect();
print "Content-type: text/html\n\n";

print $q->header(-cookie => $q->cookie(-name => ses, -value => $ses, -expires =>  '-1M'));

#print "<script language='javascript'> location.href='http://www.***.ru/' </script>";
exit;

и посмотри что он выведет в качестве заголовка
PM MAIL WWW Skype   Вверх
MaxPayne
Дата 12.4.2008, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

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



Set-Cookie: o2yql0nWos4QwxBPYpsIzul1rmdulR
Date: Sat, 12 Apr 2008 02:30:56 GMT
Content-Type: text/html; charset=ISO-8859-1


В базе MySQL занесена таже сессия: o2yql0nWos4QwxBPYpsIzul1rmdulR
Т.е. все верно.


Аммм. А дата должна выводиться как -1 месяц? Март?

Это сообщение отредактировал(а) MaxPayne - 12.4.2008, 09:36
PM MAIL WWW ICQ   Вверх
Itsys
Дата 12.4.2008, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



У тебя получается не правильная строка с Куками:
Формат Set-Cookie      
Set-Cookie: name=[значение]; path=[путь]; expires=[дата]; domain=[домен]; secure

Добавлено через 3 минуты и 58 секунд
просто если не указано 
Цитата(Itsys @  12.4.2008,  10:02 Найти цитируемый пост)
expires=[дата]; 

то считается, что куки акивны до тех пор, пока открыто окно браузера.
я, обычно для задания куков пользуюсь модулем CGI::Cookie 
PM MAIL WWW Skype   Вверх
MaxPayne
Дата 12.4.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

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



Т.е. куки изначально не правильно ставятся?
PM MAIL WWW ICQ   Вверх
Itsys
Дата 12.4.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



да

Добавлено через 1 минуту и 23 секунды
посмотри таким же образом что устанавливается при инициализации куков
PM MAIL WWW Skype   Вверх
MaxPayne
Дата 12.4.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 9.8.2005

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



При установке вот так:
Set-Cookie: ses=4vwFiykSzO3BMkXNpMsKKpgKhugdwr; path=/; expires=Mon, 12-May-2008 09:38:47 GMT Date: Sat, 12 Apr 2008 09:38:47 GMT Content-Type: text/html; charset=ISO-8859-1 


Ставлю вот таким образом:
Код

my $query = CGI->new();
print $query->header(-cookie => $query->cookie(-name => ses, -value => $ses, -expires =>  '+1M'));

PM MAIL WWW ICQ   Вверх
Itsys
Дата 13.4.2008, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: нет
Всего: 34



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


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

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


 




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


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

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