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

#以下为登录页面代码(只为测试,代码很简单):
  1. #!C:/perl/bin/perl.exe
  2. # fileName:index.cgi
  3. use warnings;
  4. use strict;
  5. use CGI;

  6. # 都是静态Html代码,就不注释了
  7. print "Content-type:text/html/n/n";
  8. print "<link rel='stylesheet' href='ey.css' type='text/css' />";
  9. print "<html>";
  10. print "<head><title>登录测试页面</title>";
  11. print "<meta http-equiv='Content-Type' content='text/html; charset=GB2312' />";

  12. print "<form action='auth.cgi' method='post'>";
  13. print "<table align='center' width='600' border='0' cellspacing='0' cellpadding='0' class='kuang'>";
  14.     print "<tr><td height='30' align='right'>UserName:";
  15.     print "<td align='left'><input type='text' name='username' size='30'/></td></tr>";
  16.     print "<tr><td height='30' align='right'>Password:</td>";
  17.     print "<td align='left'><input type='Password' name='password' size='30'/></td></tr>";
  18.     print "<tr>";
  19.     print "<td height='50' colspan='2' align='center'><input type='submit' value='login' />    <input type='reset' value='reset' /></td>";
  20.     print "</tr>";
  21. print "</table>";       
  22. print "</form>";  
  23.  
#以下代码用来登录验证:
  1. #!C:/perl/bin/perl.exe
  2. # fileName:auth.cgi
  3. use warnings;
  4. use strict;
  5. use CGI;
  6. use CGI::Session;

  7. #需要保存到session中的信息(从前一个页面发来的用户名和密码数据);
  8. my $username = param('username');    
  9. my $pwd = param('password');
  10. my $cgi = new CGI;
  11. my $sessionnew CGI::Session("driver:file",$cgi,{directory=>'/tmp'});

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

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

  17. #将session值输入变量中
  18. my $userId = $session->param('uname');
  19. my $userPwd = $session->param('password');

  20. # 此处开始页面跳转,因为没有涉及数据库,所以只用静态字符串做对比;
  21. # 我也不知道perl比较字符串的函数是哪个,就选择了另外一个函数,如果知道的,希望能回帖告知;
  22. if( index($userId,'admin')!=-1 && index($userPwd,'admin123')!=-1 ){
  23.     print "Location:success.cgi/n/n";
  24.     exit;
  25. }else{
  26. # 以下这句是关键,上面的条件满足时不用这句,否则报500错误 /
  27. # 当条件不满足时,输出一个‘bad’标志则需要这句话print "Content-type:text/html/n/n";
  28.     print "Content-type:text/html/n/n";
  29.     print "bad";
  30. }
  31. exit;

# 当用户名和密码都匹配的时候,开始跳转到新页面:
  1. #!C:/perl/bin/perl.exe
  2. #fileName:success.cgi
  3. use warnings;
  4. use strict;
  5. use CGI;
  6. use CGI::Session;
  7. my $cgi = new CGI;
  8. my $sessionnew CGI::Session("driver:file",$cgi,{directory=>'/tmp'});
  9. print $cgi->header(-charset=>'GB2312');

  10. # 输出从Session中获得的值;
  11. print $session->param('userSessionId');
  12. print $session->param('userSessionPwd');
  13. exit;
    第一次写Perl,有很多不足之处,请大家批评指正,欢迎大家提出意见和建议!^_^...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章