Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Session.pm


Автор: Marlik 25.4.2010, 12:45
Доброго времени суток, создаю сессию:

Код

my $sess_ID = new CGI::Session("driver:File", undef, {Directory=>'tmp/'}) or die;
$sess_ID -> expire('+1m');
my $sid = $sess_ID->id();

my $param1 = "1";
my $param2 = "1";

$sess_ID -> param("param1", "$param1");
$sess_ID -> param("param2", "$param2");
$sess_ID -> close();                


Отдаю идентификатор сессии в скрытом поле юзеру. Так вот если идентификатор подменить, то сессия создается все равно, что не есть гуд.

Код

my $sid = $cgi->param('sid');  

my $sess_ID = new CGI::Session("driver:File", "тут левый ид", {Directory=>'tmp/'}) or die;

my $param1 = $sess_ID -> param("param1");

if(!$param1){
print "Ошибка нет такого значения";
exit;
}

my $param2 = $sess_ID -> param("param2");

if(!$param2){
print "Ошибка нет такого значения";
}

$sess_ID -> close();


По идее сессия не должна создаваться, она должна умереть если нет такого ид.  Спасает только то, что в сессии нет таких параметров, но это не выход. Может кто сталкивался.


Автор: DurRandir 25.4.2010, 12:56
А маны на используемый модуль читали? 

Автор: Marlik 25.4.2010, 13:36
Ну да... 

Автор: DurRandir 27.4.2010, 22:26
Ну плохо читали)

Автор: Marlik 28.4.2010, 04:19
Вы бы лучше сказали где я что упустил, потому как Ваш ответ, и ответом назвать трудно...

Автор: AlexanderI 2.6.2010, 11:06
Я так думаю надо делать проверку:

my $session = CGI::Session->load(undef, "$cook", {Directory=>'tmp/'});

if ( $session->is_expired ) {
# если нет сессии 
} 
elsif ($session->id()){ 
#если есть сессия
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)