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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с сессиями 
V
    Опции темы
MZ412
Дата 4.12.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Приветствую.
Пытаюсь разобраться с сессиями на perl.
Почитал доки, написал такой скрипт (сильно сократил,  чтобы нагляднее было):

Код

#!/usr/bin/perl -w

use strict;
use warnings;
use CGI qw/:standard/;
use CGI::Session::File;
use CGI::Carp qw(fatalsToBrowser);
my $session_path = "/tmp/sessions/";

my $q = new CGI;
print "Content-type: text/html\n\n";

##############################################

my $s = CGI::Session->load() or die CGI::Session->errstr;

if ( $s->is_expired ) {
        die "Your session expired. Please refresh";
}

if ( $s->is_empty ) {
        $s=new CGI::Session("driver:File", undef, {Directory=>"$session_path"}) or die $s->errstr;
}


Файл сессии создаётся. При повторном запуске скрипта создаётся опять. Но, насколько я понимаю, не должен.
Подскажите, в чём я не прав? Хочется понять, как реализовать проверку на существование сессии.
Возможно надо делать load, указывая sid, переданый чезер куки. Но как тогда его получить?

Это сообщение отредактировал(а) MZ412 - 4.12.2009, 16:59
PM MAIL   Вверх
Bulat
Дата 4.12.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



если мне не изменяет память, то что-то типа

Код

$q -> cookie('SID')


должен вернуть тебе ранее выставленный кукис, если он был... в любом случае копай в сторону того, что может вернуть метод $q -> cookie, мож там не SID, а другой ключ хэша нужен...


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
DurRandir
Дата 5.12.2009, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В документации CGI::Session - замечательный пример, где полностью расписана работа с сессией. А здесь вы ни передаёте её пользователю, ни сохраняете сессионные данные.
PM   Вверх
MZ412
Дата 1.2.2010, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вернулся к данной теме.

Есть страница авторизации. После правильно введённого логина - пароля пользователь авторизуется и получает куку от сервера.
На стороне сервера, например в файле сессии, сохраняются некоторые данные из переменной окружения, например - ip пользователя.
Собственно - с этим проблем у меня нет. Суть вопроса заключается в проверке наличия сессии.

Я правильно понимаю, что это можно сделать так:
- берём пользовательскую куку и смотрим значение параметра с именем сессии
- ищем файл сессии и проверяем ip, хранимый в файле с тем, который мы получаем из переменной окружения для данного запроса (с ip - это всего лишь пример, само собой)
- собственно - принимаем решение, на релогин пользователя или дать возможность работать

Собственно вопросы: 
- правильно ли я понимаю механизм?
- использовать ли для решения этой задачи модуль CGI::Cookie или это можно сделать при помощи CGI::Session ?


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


Новичок



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

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



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


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

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


 




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


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

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