用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,有很多不足之處,請大家批評指正,歡迎大家提出意見和建議!^_^...

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