加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何使用Perl中的CGI :: Session处理Web会话?

发布时间:2020-12-16 06:24:55 所属栏目:大数据 来源:网络整理
导读:我使用CGI在Perl中创建Web应用程序.此应用程序实现模型视图控制器体系结构,并且系统在根目录中具有以下结构: -楷模 -views -controllers -index.pl 文件index.pl仅根据发送给它的某些参数包含相应的视图(使用函数param()): 这是我的index.pl: ###########
我使用CGI在Perl中创建Web应用程序.此应用程序实现模型视图控制器体系结构,并且系统在根目录中具有以下结构:

-楷模
-views
-controllers
-index.pl

文件index.pl仅根据发送给它的某些参数包含相应的视图(使用函数param()):

这是我的index.pl:

###############################################
# INDEX.PL
###############################################

#!/usr/bin/perl

use Switch;
use CGI qw/:standard/;
use strict;
use CGI::Session ( '-ip_match' );

my $session = CGI::Session->load();

print header,start_html;
print "

Menu

"; if(!$session->is_empty){ #links to other files to which only logged users have access; } print '

Login

'; if(defined(param('p'))){ switch(param('p')){ } ##login form in html,which sends param('login') back to index.pl case 'login' { require('views/login/login.pl'); } else{ print "Page not found"; } } if(defined( param('login'))){ ##if param is defined we execute login2.pl require ('views/login/login2.pl'); }

正如您可以看到访问链接登录是否会显示登录表单,然后在提交电子邮件和密码后的登录表单中,login2.pl文件应该加载:

login2.pl

###############################################
LOGIN2.PL
###############################################
#!/usr/bin/perl
  use CGI qw/:standard/;
  use lib qw(../../);
  use controllers::UserController;
  use CGI::Session ( '-ip_match' );

  my $session;

  my $mail = param('mail');
  my $password = param('password');

  my $userc = new UserController();
  my $user = $userc->findOneByMail($mail);


  if($mail ne '')
  {
      if($mail eq $user->getEmail() and $password eq $user->getPassword())
      {
          $session = new CGI::Session();
          $session->header(-location=>'index.exe');
      }
      else
      {
          print header(-type=>"text/html",-location=>"index.exe?p=login");
      }
  }
  elsif(param('action') eq 'logout')
  {
      $session = CGI::Session->load() or die CGI::Session->errstr;
      $session->delete();
      print $session->header(-location=>'index.exe');
  }

?

login2.pl文件正确执行,当邮件和密码正确时,它应该创建一个新会话.但是,我不知道变量$session是否正确发送到index.pl,因为索引始终只显示不需要活动会话的链接.
我遇到的另一个问题是我无法删除会话.我尝试在index.pl文件中创建一个变量$session,只是为了查看条件是否有效,然后我猜想用以下命令将其删除:
?$会话而>删除();
?$会话而>冲洗();
但会议似乎仍然存在.

解决方法

你为什么不看看 catalyst?
它是perl的MVC Web框架.
它为您完成所有繁琐的模型 – 视图 – 控制器耦合.
它也有很多插件,其中一个是 Session plugin

GR,LDX

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读