codeigniter会话自定义数据丢失,但不在localhost上

时间:2012-05-09 14:32:00

标签: database codeigniter session

我的ci会话有这个奇怪的问题。 在localhost上工作正常,但在线日志显示错误:

  

会话Cookie数据与预期不符。这可能是   可能的黑客企图。

我删除了所有Cookie并清空了会话表。我还将user_agent长度设置为255. Basepath也是正确的。记录会话ID时的注意事项如下:

在登录页面上,当检查用户名/ pw时,id是相同的,然后我转到id已更改的成员区域。

另一个例子:
1.我去会员区,会话ID设置,我没有登录,我发送到登录
2.在登录页面上,会话ID被更改,我登录
3.验证,会话ID不变,我已经过验证并发送到会员区域 4.在成员区域,会话ID已更改,我尚未登录。

在登录页面上,我的会话表计数0行,当我登录会话表计数2/3行时。其中1个,但没有当前会话ID保存所有正确的数据。

希望有人能帮助我。

2 个答案:

答案 0 :(得分:4)

我认为Codeignitor原生php会话库存在问题。它会导致您描述的问题,因为如果未设置cookie,则不会设置。此外,它将无法识别会话。为了避免此问题,您可以使用Native Session Class

以下是支持我的回答的几个链接。 Problems with cookies / MAMP / Codeingiter http://myphplibrary.blogspot.in/2012/03/codeigniter-session-issue-fixation.html

答案 1 :(得分:1)

要检查的几件事情;

  1. 服务器本地时间与当地时间的关系 - 也许cookie在设置时即将到期?要确认 - 将$ config ['sess_expiration']时间设置为9999999并查看它是否有效

  2. 关闭$ config ['encrypt_cookie']

  3. 关闭$ config ['sess_match_ip']

  4. 确保您已设置正确的Cookie信息:

    $config['cookie_prefix']    = "";
    $config['cookie_domain']    = // YOUR DOMAIN
    $config['cookie_path']      = // YOUR BASE URI
    $config['cookie_secure']    = FALSE;