Forum Webscript.Ru
Программирование => Perl => Тема начата: torres от 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";
}
что не так, буду рад помощи
-
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)