[困惑]eval 在模块中出现问题/?

| 9 Comments | 0 TrackBacks | WebBlog Articles

搞文本Session。。。
已经以为成功。。
想到Session可能会自己损坏。所以。。自己做了测试,结果,发现人为改坏Session文本后,程序居然读取失败后 500 err?

明明是在模块中  CheckSession时候用的eval呀。应该不会500err才是。但是err.log还是指向的那句

eval ( "require \"$self->{_API}->{_SESSION_FILE}\";" ) || $self->NewSession();


附上完整代码。 问题就出现在DiGiSession.pm模块中。。。

http://easun.org/upload/early/cgi_1105459562.rar

测试代码说明 :
1。Session目录需要可读/写 (777目录+666文件)。
2。我用的相对路径,如果你的主机不支持相对路径,请把
my $session = DiGiSession->new($c_ss_id,'Session','3m');

改成
my $session = DiGiSession->new($c_ss_id,'你的路径/Session','3m');


声明:DiGiSession.pm模块版权为Firzen<firzen@perlchina.org>所有,我只是改了一点东西而已。呵呵:)

引用通告|TrackBacks (0)

本日志的TrackBack URL: http://easun.org/cgi-bin/mtos/tb_mt_41.pl/19.

本文相关评论|Comments (9)

eval { "require \"$self->{_API}->{_SESSION_FILE}\";" } || $self->NewSession();

找到原因。不是eval问题。而是。。。$self->NewSession(); 出了问题。

不知道....
我在公司測試過....
好像只是 eval 的問題...
把  (..) 改成 {..} 就行.......

和哪个没有关系。
原因是 NewSession 这个函数根本就没有。应该是 SessionNew()
严重ft.

改為
eval ( "require \"$self->{_API}->{_SESSION_FILE}\";" ) || 1;# || $self->NewSession();

String found where operator expected at Session/ss_fefb2fc46ee40df34a4faad876326
3f7 line 1, near "fefb2fc46ee40df34a4faad8763263f7",""
Bareword found where operator expected at Session/ss_fefb2fc46ee40df34a4faad8763
263f7 line 1, near "","_ATIME"
       (Missing operator before _ATIME?)
String found where operator expected at Session/ss_fefb2fc46ee40df34a4faad876326
3f7 line 1, near "_ATIME" => ""
Number found where operator expected at Session/ss_fefb2fc46ee40df34a4faad876326
3f7 line 1, near "" => "1105714371"
       (Missing operator before 1105714371?)
String found where operator expected at Session/ss_fefb2fc46ee40df34a4faad876326
3f7 line 1, at end of line
       (Missing semicolon on previous line?)
Set-Cookie: Session_ID=fefb2fc46ee40df34a4faad8763263f7; path=/; expires=Sat, 14
-Jan-2006 14:53:17 GMT
Date: Fri, 14 Jan 2005 14:53:17 GMT
Content-Type: text/html; charset=gb2312

fefb2fc46ee40df34a4faad8763263f7
那個就是我的測試結果.....
的確會出錯....
不過再執行一次就沒問題,應該是在500 時有新session檔產生...

===
改為
eval { "require \"$self->{_API}->{_SESSION_FILE}\";" } || 1;
後的結果

Set-Cookie: Session_ID=fefb2fc46ee40df34a4faad8763263f7; path=/; expires=Sat, 14
-Jan-2006 14:55:05 GMT
Date: Fri, 14 Jan 2005 14:55:05 GMT
Content-Type: text/html; charset=gb2312

fefb2fc46ee40df34a4faad8763263f7

完全沒有問題

恩,就是后面的函数写错了而已。。。我一直都没有发现。
真马虎。。晕


之前有用过PID
不过在很长的一段时间内都没有想出自动作废进程号的处理方式
后来经过一段时间才想到

木头是打算用它取代部分cookies?

下面引用由曾子程在 2005/1/15 00:09am 发表的内容:

之前有用过PID
不过在很长的一段时间内都没有想出自动作废进程号的处理方式
后来经过一段时间才想到
...

http://www.easunstudio.com/cgi-bin/perl/topic.cgi?forum=3&topic=16&show=0   :em05:
下面引用由路杨在 2005/1/15 04:45am 发表的内容:
http://www.easunstudio.com/cgi-bin/perl/topic.cgi?forum=3&topic=16&show=0

看到呢
不过
跟我后来的应用方法不大一样

我所设计的PID是根据时间来判断是否作废的
如果PID执行时间-程序记录的用户登录时间>系统设定存活期,
那么就出错误信息,提示用户重新登陆………………

发表该文评论|Leave a comment

最近发表|Recent Entries

[MT Tips]如何让某个日志在Blog首页固顶?

貌似最简单的办法就是修改日期到一个很遥远的日期,比如 AnySQL 那样:) 但是带来的问题的很多,比如导致Feed阅读器犯糊涂或者影响搜索引擎的收录等等,更糟糕的是对于 日志来说,最主要的就是发布日期。也许大家都已经发现了,我的主页模仿 MT Forum 搞了一个固顶日志(也是为了风格统一)出来,这个固顶日志是后台通过自己设置实现的。是怎么设置的。答案是利用 <mt:Entries> 的tags 功能。 具体概念代码如下:<mt:Entries tag="@top" sort_by="authored_on" sort_order="descend" limit="1" blog_ids="1,5"> dosthing.....</mt:Entries> 这样我们只要要在固定的主题 加上…

北京 Perl Workshop 2008 网站开张 - 接受大会注册,演讲报名

网站开张了, 地址是 http://conference.perlchina.org/bjpw2008/ 由 PerlChina 和 Postgresql China 合办,2008 年 11 月 8 号举行的 Beijing Perl Workshop 是一个免费的 Perl 交流会,向所有对…

好玩的 MT Forum 的按作者归档

Perl Forum 用 MT4 的 MT Forum 的功能搭建起来了好几天了,一直没有发现什么意外,今天突然发现 按作者按月归档 貌似找完了整个发布完的 Perl Forum 也没有找到 link ,查看作者个人信息貌似也没有 link ? 真是好玩的 归档方式。从后台看,给每个用户(作者)都建立了按月的归档页面,估计是为了便于各用户归档自己的文章吧? 后台抓图如下:…