![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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, как где то было уже описано. Но не получается. В чем может быть проблема. |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
print $query->header(-cookie => $query->cookie(-name => ses, -value => $vc, -expires => 'now'));
Куки ты создал, а в заголовок кто его будет запихивать? Это сообщение отредактировал(а) Itsys - 1.4.2008, 16:59 |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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')); |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
ну конечно вторую, это я посто копировал и не посмортел исходную переменную
|
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Спасибо.
|
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Блин выход запарил - не выходит. Уже и браузер закрыл, открыл - не помогает.
Может кто подскажет. ПРоблем с входом и проверкой на наличие нет. ПРивожу код скритп по выходу.
|
|||
|
||||
| GoDleSS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 11.2.2007 Где: Пироговский Репутация: нет Всего: 2 |
MaxPayne, редирект проще сделать в том же хидере, зачем жабаскрипт пуляешь?!
--------------------
It's a nice day to die my friend! |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Поскажите как - сделаю. Но главная проблема что куки не стираются.
|
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
Попробуй так:
и посмотри что он выведет в качестве заголовка |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
У тебя получается не правильная строка с Куками:
Формат Set-Cookie Set-Cookie: name=[значение]; path=[путь]; expires=[дата]; domain=[домен]; secure Добавлено через 3 минуты и 58 секунд просто если не указано то считается, что куки акивны до тех пор, пока открыто окно браузера. я, обычно для задания куков пользуюсь модулем CGI::Cookie |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Т.е. куки изначально не правильно ставятся?
|
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
да
Добавлено через 1 минуту и 23 секунды посмотри таким же образом что устанавливается при инициализации куков |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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 Ставлю вот таким образом:
|
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
Значит его глючит на "-1М", попробуй "now"
|
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Если Вы используете use CGI::Cookie; не могли бы привести пример как вы ставите куку, читаете и стираете (стираете я так понял равно ставить с датой now или -ДАТА). |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
А Документацию читал?
|
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Может на форуме после первого вопроса отправлять к документации и закрывать тему? Читал. Выкладывал сюда примеры, читал то что уже писали на этом форуме, тестировал у себя, читал документацию, пробовал другие формы записи куков, опять читал. В итоге запутавшись окончательно пришел сюда.
|
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
MaxPayne, не кипятись, просто если чего не понятно в документации ты скажи, попробуй установить время now, и посмотри что выводит заголовок.
|
|||
|
||||
| MaxPayne |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Я сделал пробник http://www.3fun.ru/cgi-bin/zzlogin.cgi
Но теперь войти не могу даже. Вилы. Логин и пароль там test (уже подставлены) Ставлю куки как
Первая часть такая же как в доках, а вторая часть "print header(-cookie=>$c);"у меня идет так, в доках же написано
или
Это сообщение отредактировал(а) MaxPayne - 17.4.2008, 10:20 |
||||||
|
|||||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
MaxPayne, советую внимательно почитать про параметр -secure.
Это сообщение отредактировал(а) ginnie - 17.4.2008, 11:15 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
ginnie, знаючто для https://. Убрал я его. Но ничего не изменилось
Еще такой момент - принципиально ли для куков какой уровень домена?: http://www.url.ru/ http://url.ru/ Это сообщение отредактировал(а) MaxPayne - 17.4.2008, 13:51 |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
MaxPayne, можно посмотреть код zzlogin.cgi?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
zzlogin.cgi
Это сообщение отредактировал(а) MaxPayne - 17.4.2008, 13:53 |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
MaxPayne, домен принципиален. Чтобы работало на всех, надо указывать '.url.ru'.
При заходе на тестовую страницу (http://www.3fun.ru/cgi-bin/zzlogin.cgi) у меня выдает Max Payne и выход -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
Т.е надо писать не
-path => '/' а -path => '.url.ru' А выйти вы можете? |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
MaxPayne, для домена отдельный параметр
Выйти не могу. Посмотрел что происходит при взаимодействии с Вашими скриптами. При нажатии на выход zzexit.cgi ставит cookie 'ses' с пустым значением и путем '.3fun.ru' (это, наверное, Вы экспериментируете). Время устаревания 'Thu, 17-Apr-2008 07:37:14 GMT' (это в 15:35 MSK). Заголовки смотрю при помощи плагина HttpWatch для IE. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
ginnie,
НУ поидее выход это установка куков с датой устаревания now. Т.е. поидее это нормально то что он ставит такую куку. Плагин HttpWatch нашел, но он платный. |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: нет Всего: 18 |
MaxPayne, поставте proxomitron он как прокси работает, бесплатный и можно просматривать запросы.
|
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
ginnie, Странно что ставит пустую, ведь из базы нужная кука удаляется.
zzexit.cgi
Может есть фишка еще в кавычках? В раличном написании: ' или ". Это сообщение отредактировал(а) MaxPayne - 22.4.2008, 15:42 |
|||
|
||||
| tolkien |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: нет Всего: 4 |
Протокол работ кук очень простой. Реализуйте свой модуль.
|
|||
|
||||
| KSURi |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 2 Всего: 27 |
IMHO не хороший совет. Зачем человеку изобретать очередной велосипед (даже не "велосипед", а "велосипедище")? Нужно просто получше почитать документацию по CGI::Cookie и RFC 2965. У меня работает вот такой код (кука нормально удаляется, FF2.0.14):
Это сообщение отредактировал(а) KSURi - 22.4.2008, 18:50 -------------------- Died at Life.pl line 21 |
||||
|
|||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
tolkien,
Научи меня летать учитель - летать очень легко сказал учитель и улетел KSURi, Все просто когда уже работал с этим. Дело в том что с куками возился год назад, но как и щас чтото получилось чтото нет. Когда в сумме все не работает, "организм" в целом мертв. Документацию читал, но опять же может не все понимаю по английски - что не понятно уже писал на прошлой странице. Вопрос в принципе в следующем - почему не работает ВЫХОД. Пример тоже на прошлой странице. То что вариантов реализаций много я понял - и это как раз и сбивает. |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 2 Всего: 27 |
MaxPayne, зашел на ваш линк (http://www.3fun.ru/cgi-bin/zzlogin.cgi). При входе куки не устанавливаются, при нажатии на "Выход" (кстати параметр r для zzexit.cgi пуст, так и должно быть?) устанавливается пустая кука ses (ну т.е. в запросе ее установку видно, но в браузере она не сохраняется).
Я не совсем понял где все-таки баг... В любом случае попробуйте использовать код для установки кук, который я привел выше. ЗЫ: в вашем случае редирект имхо лучше будет сделать через <meta name="refresh"> -------------------- Died at Life.pl line 21 |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
KSURi, Меня смущает return. Что мне нужно поставить вместо:?
|
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 2 Всего: 27 |
У меня стоит return потому, что куки возвращают несколько ф-ий, соответственно это просто отрывоки из них. Привел я их для того, чтобы показать, что необязательно указывать параметры -path, -domain и т.д.
-------------------- Died at Life.pl line 21 |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
KSURi, домен я поставил для того чтобы и www.3fun.ru и 3fun.ru восринимались как один для кук.
Вроде заработало Если будет возможность проверьте у себя: http://www.3fun.ru/cgi-bin/zzlogin.cgi Логин и пароль test (уже подставлены) Проблемы были 2: 1) Если куки были пустые в базе все равно находились записи с пустым полем и выдавало первую попавшуюся 2) По всей видимости надо было писать переменную не в кавычках: -value => "$ses" Если все работает могу дать кодинг трех файлов (вход, выход и форма) |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: нет Всего: 18 |
MaxPayne, потестировал. На этой странице ничего не происходит. т.е.
было такое окно ![]() после нажатия OK, тоже самое. Так и должно быть? З.Ы. В опере тестировал Это сообщение отредактировал(а) shamber - 28.4.2008, 18:01 |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
shamber, дома перестало все работать. Не могу зайти. Так же не должно быть
Как завелась кука на компе, так больше не могу войти - новая кука не накладывается одна на другую при новом входе. Это сообщение отредактировал(а) MaxPayne - 28.4.2008, 22:36 |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: нет Всего: 18 |
Видимо у меня тоже есть старая кука.
Я его тестировал когда Вы только доступ предложили Это сообщение отредактировал(а) shamber - 29.4.2008, 08:50 |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
shamber, Блин на работе все ок (Vista SP1 + IE 7)
Должно быть вот это: |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: нет Всего: 18 |
![]() Это в опере. Просто я с ее помощью заходил на Ваш сайт, когда скрипт не совсем корректно работал. А В IE6 все нормально, т.к. я его не использовал раньше для вашего сайта. P.S. ИМХО можно не заморачиваться, я думаю людей со старыми куками не так много Это сообщение отредактировал(а) shamber - 30.4.2008, 08:25 |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
Не скажи, а если пользователь не нажмет кнопку "Выйти", а запись о его сессии с сервера удалится и при следующем заходе опять будет такая же ситуация.... я с такими случаями уже сталкивался. Надо при получении куки от пользователя проверять наличие в базе соответсвующей записи, и, в случае, если ее нет, перезаписывать куки на новые. |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: нет Всего: 18 |
Itsys, я имел в виду конкретно этот пример.
А то что надо перезаписывать это правильно. MaxPayne, вы же уже разобрались с перезаписью? |
|||
|
||||
| MaxPayne |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 9.8.2005 Репутация: нет Всего: нет |
shamber, не совсем. Как и на приведенном вами рисунке - Записанная кука есть, но в базе ее нет, поэтому выводит форму. Но когда жму войти проверяется логин и пароль, в базу заносится новая кука и записывается на комп. Но в тот то и дело что кука не перезаписывается - т.е. не накладывается поверх.
|
|||
|
||||
| Vavilen |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 18.1.2009 Репутация: нет Всего: нет |
Здравствуйте!
Проблема такова: не могу передать куку броузеру вот кусок модуля:
При этом кука выводится на экран в броузее, а не передается в заголовке пробовал по аналогии с документации CGI::Cookie, то есть: If you want to set the cookie yourself, Within a CGI script you can send a cookie to the browser by creating one or more Set-Cookie: fields in the HTTP header. Here is a typical sequence:
В этом случае кука вообще никак не передается. Подскажите, пожалуйста, в чем проблема? |
||||
|
|||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 2 Всего: 27 |
Найдите отличие своего кода от примера CGI::Cookie. Вы отделили заголовки от контента слишком рано. ЗЫ: кстати, насколько я помню, по RFC правильно делать "\r\n" x 2, а не "\n\n" Это сообщение отредактировал(а) KSURi - 13.7.2009, 15:05 -------------------- Died at Life.pl line 21 |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |