免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3184 | 回复: 2
打印 上一主题 下一主题

[求助]CGI::Session建立后如何判断Session为空? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-07 14:17 |只看该作者 |倒序浏览
如题,在login页面建立了session之后,不论跳转到哪个页面,有要取session值,
如果未经session建立步骤,即login,直接用url登录后面的页面,session应该是一个空值。

问题:
1.大家在session里面保存的是什么内容?一个特殊的验证码,以后每个页面读出的session值与之相等就给予阅读权限?
还是保存用户名密码,每刷新或者进入一个页面都要DB里面验证一下用户名密码是否匹配?
2.未经login,直接进入后面的页面,我认为session应该是一个空值,但是我用

  1. $s = CGI::Session->load() or die CGI::Session->errstr;
  2.     if ( $s->is_expired ) {
  3.         die "Your session expired. Please refresh";
  4.     }
  5.     if ( $s->is_empty ) {
  6.         die "Your session empty. Please refresh";
  7.     }
复制代码
这段代码,总是进不到第二个if里面,这是为何?
如何判断用户属于未登录直接进后边的页面?
PS:代码是CPAN上面复制的,自己改了一下is——empty
谢谢大家!

论坛徽章:
0
2 [报告]
发表于 2010-04-07 15:11 |只看该作者
$s = CGI::Session->load() or die CGI::Session->errstr;

这一行没写
但是现在添加上去之后,现在的完整代码是这样的

  1. my $cgi = new CGI;
  2. my $session = new CGI::Session("driver:File", $cgi ,{Directory=>'/tmp'});
  3. $session = CGI::Session->load() or die CGI::Session->errstr;
  4. my $usr_name = $session->param("usr_name");
  5. my $rep_pn = $session->param("rep_pn");

  6.     if ( $session->is_expired ) {
  7.         print $session->header(),
  8.             $cgi->start_html(),
  9.             $cgi->p("Your session timed out! Refresh the screen to start new session!");
  10.             $cgi->end_html();
  11.         $session->delete();
  12.         $session->flush();
  13.         exit(0);
  14.     }elsif ( $session->is_empty) {

复制代码
问题是现在每次登录进去之后都是进入 $session->is_empty这项,这又是为何啊????

论坛徽章:
0
3 [报告]
发表于 2010-04-08 21:28 |只看该作者
你对session的理解有点乱
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP