免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 16739 | 回复: 34

Perl CGI Session,要求加精 [复制链接]

论坛徽章:
0
发表于 2005-01-13 15:08 |显示全部楼层
最近看到很多帖子都是关于Perl CGI Session的使用的,在此算是统一回复罢

正确的代码如下(1.pl)

  1. #!/usr/bin/perl
  2. use CGI;
  3. use CGI::Session;

  4. my $cgi= new CGI;
  5. my $session = new CGI::Session("driver:File", $cgi , {Directory=>;'/tmp'});
  6. my $cookie = $cgi->;cookie(CGISESSID =>; $session->;id );
  7. print $cgi->;header(-cookie=>;$cookie);
  8. $session->;param('f_name', 'Sherzod');
  9. print "<script language='javascript'>;";
  10. print " location.href='2.pl';";
  11. print "</script>;";
复制代码


(2.pl)

  1. #!/usr/bin/perl -w
  2. use strict;
  3. use CGI;
  4. use CGI::Session;

  5. my $cgi = new CGI;
  6. my $session = new CGI::Session("driver:File", $cgi ,{Directory=>;'/tmp'});
  7. my $strName = $session->;param("f_name");
  8. print $cgi->;header();
  9. print "-------------------$strName--------------------\n";
复制代码


前面的帖子里面主要的问题是认为CGI::Session是可以独立使用的,其实不然,因为我们知道session的两种传递形式就是get url和cookie,因此在第一个页面创建session的时候必须也要将次session id通过url或者cookie传抵给以后的页面,当以后的页面在执行的时候流览器将自动将同一个域的cookie传到服务器上,然后我们利用new CGI可以得到这个session id,因此就可以通过/tmp文件夹下的session文件取到value了

当然,这个例子仅仅演示了coockie session的使用,但是同样有借鉴意义的

在这几天的帖子里面有一位同志错误将new session里面第二个参数置为undef,其实这相当于又重建了一次session,跟前一个页面建的session完全失去联系,所以最后得到的f_name值是不存在的

归根结底,session其实是一个记录了此次会话的一些特有信息的文件(或者数据库行,当使用不同的session driver时),如果没有将session id互相传递来判断的话是无法得到相应信息的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2005-01-13 15:15 |显示全部楼层

Perl CGI Session,要求加精

请专家鉴定一下,
有望成为精华。

论坛徽章:
0
发表于 2005-01-13 15:19 |显示全部楼层

Perl CGI Session,要求加精

谢谢flw

其实也不特别要求,不过看到问的人的确很多,希望加成精华后便于查找罢了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2005-01-13 15:28 |显示全部楼层

Perl CGI Session,要求加精

可惜我不懂 CGI……

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-01-13 15:39 |显示全部楼层

Perl CGI Session,要求加精

不錯呀...很好...
我用perl寫CGI..但是不用CGI pm..
也很少用session...
但是看起來應該沒錯....

论坛徽章:
0
发表于 2005-01-13 15:52 |显示全部楼层

Perl CGI Session,要求加精

,程序我测过,没有问题的,呵呵

论坛徽章:
0
发表于 2005-01-13 18:04 |显示全部楼层

Perl CGI Session,要求加精

支持一把:)
8过如果用文本  Session 的话,建议用Firzen <firzen@perlchina.org>;. 老兄写的DiGiSession,比CGI::Session模块效率高一点。

论坛徽章:
0
发表于 2005-01-14 09:27 |显示全部楼层

Perl CGI Session,要求加精

现在看不懂,先存下来^_^

论坛徽章:
0
发表于 2005-01-18 19:19 |显示全部楼层

Perl CGI Session,要求加精

楼上的,好主意,赞成!

论坛徽章:
0
发表于 2005-01-24 09:30 |显示全部楼层

Perl CGI Session,要求加精

终于找到这里了
superdoctor,我想问一下
在1.pl里面必须写一下代码吗?
print "<script language='javascript'>;";
print " location.href='2.pl';";
print "</script>;";
就是说,在设置Session时,必须设置Session的文件?
我的情况是这样的,比如有一个论坛,
在首页输入用户名密码登录
然后登录到另外一个网页a,
这个是一个框架网页,它包括两个两个网页(b、c),是上下结构的,
上面的网页b是主要的菜单(功能),
具体的功能显示在下面c,
比如b网页有5个功能
那么就会对应5个不同的网页要在c网页显示
我想在a网页设置好Session后,
在这5个不同的网页都可以取到Session的值,
甚至在5个不同的网页的连接网页中随时都可以取到Session的值
这样能实现吗?
请高手版我分析一下
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP