user-pic

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

Vote 0 Votes



搞文本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>所有,我只是改了一点东西而已。呵呵:)

9 Replies

| Add a Reply
  • 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执行时间-程序记录的用户登录时间>系统设定存活期,
    那么就出错误信息,提示用户重新登陆………………

Add a Reply

Forum Groups

Good Perl Books

Perl 學習手札

作者:簡信昌

Perl 學習手札 , 一本优秀的中文Perl在线学习资料。

Perl 程序讨论区

12 50

Last Topic: [注意]本区文章归档区 by 路杨 on Oct 16, 2006

事物处理及其他

113 1410

Last Topic: 踩个脚印 by 眼睛oo on Dec 4, 2010

测试私密区

测试私密区

18 88

Notice: 用于测试程序或者不可告人之秘密。不要问我要密码哦。。[此为原LB_ES论坛系统保留项,只限原有权限朋友进入,不再接受注册]

OpenID accepted here Learn more about OpenID