在我的主脚本main.cgi
中,我向用户提供form
登录。提交此form
后,系统会调用另一个脚本来执行验证login.cgi
。
login.cgi
# Convert request method to Uppercase eg: GET, POST
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
# If "POST" request sent, check login credentials
if ("$ENV{'REQUEST_METHOD'}" eq "POST"){
# Get login parameters
my $username = param('username');
my $password = param('password');
my $loginCheckResult = check_login($username, $password);
# If login was successful, create a cookie
if ($loginCheckResult){
# Set Cookie
my $cookie = CGI::Cookie->new(-name=>'USERID',-value=>$cookie_value);
print redirect(-uri => '/cgi-bin/main.cgi/', -cookie => $cookie);
# If login was Unsuccessful, redisplay the login page
} else {
# Do something here...
}
}
如果登录成功,我会创建一个cookie并将用户发送回主页面。在这里,我可以测试是否存在cookie以确定登录是否成功。
但是,如果登录失败,我不知道该怎么办。
main.cgi
if ($cookie eq ""){
print show_login_form();
# Login successful
} else{
print $cookie;
}
如果我将它们重定向回main.cgi
,则会再次显示登录表单,但不会显示任何错误。如果我在
print show_login_form();
然后它将永远显示出来。有没有办法可以发回一个变量来表明登录失败,然后在main.cgi
检查这个变量?
或者我应该在登录尝试失败时在login.cgi
中创建另一个登录表单并在此表单中包含错误消息?
感谢您的帮助。
答案 0 :(得分:0)
“成功登录”代码路径中的代码是生成登录用户应该看到的页面的代码。