您的位置:首页 > 其它

用Session实现Perl验证及页面跳转。

2008-11-28 10:17 351 查看
#以下为登录页面代码(只为测试,代码很简单):
#!C:/perl/bin/perl.exe
# fileName:index.cgi

use warnings;
use strict;
use CGI;

# 都是静态Html代码,就不注释了

print "Content-type:text/html/n/n";
print "<link rel='stylesheet' href='ey.css' type='text/css' />";
print "<html>";
print "<head><title>登录测试页面</title>";
print "<meta http-equiv='Content-Type' content='text/html; charset=GB2312' />";

print "<form action='auth.cgi' method='post'>";
print "<table align='center' width='600' border='0' cellspacing='0' cellpadding='0' class='kuang'>";
print "<tr><td height='30' align='right'>UserName:";
print "<td align='left'><input type='text' name='username' size='30'/></td></tr>";
print "<tr><td height='30' align='right'>Password:</td>";
print "<td align='left'><input type='Password' name='password' size='30'/></td></tr>";
print "<tr>";
print "<td height='50' colspan='2' align='center'><input type='submit' value='login' /> <input type='reset' value='reset' /></td>";
print "</tr>";
print "</table>";
print "</form>";

#以下代码用来登录验证:
#!C:/perl/bin/perl.exe
# fileName:auth.cgi

use warnings;
use strict;
use CGI;
use CGI::Session;

#需要保存到session中的信息(从前一个页面发来的用户名和密码数据);
my $username = param('username');

my $pwd = param('password');

my $cgi = new CGI;
my $session= new CGI::Session("driver:file",$cgi,{directory=>'/tmp'});

#设置或构造一个cookie,标记是sessionid;
my $cookie=$cgi->cookie(CGISESSID=>$session->id);

#下面的userSessionId和userSessionPwd可以随便设置;
$session->param("userSessionId",$username);
$session->param("userSessionPwd",$pwd);

#将session值输入变量中

my $userId = $session->param('uname');
my $userPwd = $session->param('password');

# 此处开始页面跳转,因为没有涉及数据库,所以只用静态字符串做对比;
# 我也不知道perl比较字符串的函数是哪个,就选择了另外一个函数,如果知道的,希望能回帖告知;

if( index($userId,'admin')!=-1 && index($userPwd,'admin123')!=-1 ){
print "Location:success.cgi/n/n";
exit;
}else{
# 以下这句是关键,上面的条件满足时不用这句,否则报500错误 /

# 当条件不满足时,输出一个‘bad’标志则需要这句话print "Content-type:text/html/n/n";
print "Content-type:text/html/n/n";
print "bad";
}

exit;

# 当用户名和密码都匹配的时候,开始跳转到新页面:
#!C:/perl/bin/perl.exe
#fileName:success.cgi

use warnings;
use strict;
use CGI;
use CGI::Session;

my $cgi = new CGI;
my $session= new CGI::Session("driver:file",$cgi,{directory=>'/tmp'});
print $cgi->header(-charset=>'GB2312');

# 输出从Session中获得的值;

print $session->param('userSessionId');
print $session->param('userSessionPwd');
exit;
第一次写Perl,有很多不足之处,请大家批评指正,欢迎大家提出意见和建议!^_^...

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐