perl cgi session php,如何使用Perl中的CGI :: Session处理Web会话?

我使用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,只是为了查看条件是否有效,然后我猜想用以下命令将其删除:

$会话而>删除();

$会话而>冲洗();

但会议似乎仍然存在.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值