Автор Тема: CGI::Session  (Прочитано 2564 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн torres

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
CGI::Session
« : 03 Ноября 2005, 15:56:58 »
всем привет. Естя такая проблема:
устоновил модуль CGI::Session(нужно-рекомендовали) и прбовал с ним разобраться, не очень получяетсяб так как я тута чайник.
Буду ра любой посказки, заранее блогодарен.
А вот собствено и проблема:
есть страничка login.html:




Данные передаются submit.cgi, который собствено должен проверять :
my $cgi=new CGI;
my $user=$cgi->param(\'user_order\');
my $pass = $cgi->param(\'password_order\');
my $query="select user_name, password from order_form where user_name=? and password=?";
my $statement = $dbh->prepare($query);
$statement->execute($user, $pass);
if( $statement->fetchrow_array)# проверяю если они у  меня зарегистрированы
{
дальше по ходу если да должен записаться в my_session
$CGI::Session::MySQL::TABLE_NAME = \'my_sessions\';
my $s = new CGI::Session("driver:MySQL", $cgi, {Handle=>$dbh});
$s->expire(\'+10m\');
if ( $s->is_expired )
{
$s->delete();
print \'\' back to login";
exit(0);
}
if ( $s->is_empty )
{
print "Content-Type: text/html\\n\\n";
print "back to login"
exit(0);
print $s->header();
print" Mojite rabotati";
}else{
print" no such a user name";
}
что не так, буду рад помощи

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
CGI::Session
« Ответ #1 : 03 Ноября 2005, 17:08:40 »
1. проверку достаточно сделать так:
SELECT 1 FROM order_form where user_name=? and password=?
но хранить в БД пароль в открытом виде лучше не стоит...

2. сессию лучше определять до того так ты начинаешь проверять логин и пассворд... а уж потом, после проверки писать туда что-либо или не писать...
 
3. сдалай лучше отдельно скрипт авторизации и скрипт входа в систему...
т.е. допустим auth.cgi:
use CGI qw(:param);
my $action = param(\'action\');
if (!$action)
{
#выводим форму ввода логина и пароля ...
}
elsif ($action eq "check")
{
#проверяем пароль и логин
if ($check) #все правильно...
  {
    print "Location: main.cgi\\n\\n";
  }
else
  {
   print "Location: auth.cgi?".time;
  }
}
  что это даст... при каждом не правильном вводе пароля будет редирект на новую страницу... (perldoc -f time)
And no religion too...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28