【问题标题】:Codeigniter session destroy on browser close doesn't work浏览器关闭时 Codeigniter 会话销毁不起作用
【发布时间】:2014-11-17 03:51:47
【问题描述】:

我正在使用 Codeigniter 2.2.0,试图设置我的会话以便在浏览器关闭时销毁会话。在我的application/config/config.php 中,我设置了

 $config['sess_use_database']   = TRUE;
 $config['sess_expire_on_close']    = TRUE;

但它不起作用。存储在数据库中的会话不会被破坏。我尝试这样做:

$this->session->set_userdata(array('user'=>'user1','login'=>TRUE));

并且会话通过序列化 user_data 存储在数据库中。然后我关闭浏览器,再次打开浏览器,运行上面相同的代码。因为第一个会话没有从表中删除,现在我在会话表中得到了 2 条记录,user_data 列中的值相同,但 session_id 值不同。我想要的只是第一个会话必须被销毁并从数据库中删除。

我该如何解决这个问题?有什么建议吗?

【问题讨论】:

    标签: php session codeigniter-2


    【解决方案1】:

    你为什么不尝试过期会话的 ajax 请求:

    var sessionExpire = function(e){
            //here ajax request to expire session
      };
    window.unload = sessionExpire;
    

    【讨论】:

    • 上次我尝试使用 unload 函数添加 javascript 来检查窗口何时关闭,但现在看起来它也可以正常工作了,因为当页面重新加载时,unload 函数将运行剧本。在我的页面上,我使用setInterval() 函数每 5 秒重新加载一次页面。所以如果我使用unload函数,我只能访问我的页面5秒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2012-10-21
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多