sess_expire_on_close无效

时间:2013-12-27 18:23:47

标签: php codeigniter

我有一个问题..在$config['sess_expire_on_close'] = TRUE; 当我关闭浏览器时...会话仍保存在数据库中。 我仍然可以在user_data列中看到数据。

的config.php

  $config['sess_cookie_name']     = 'ci_session';
  $config['sess_expiration']        = 2400;
   $config['sess_expire_on_close']  = TRUE;
  $config['sess_encrypt_cookie']    = FALSE;
  $config['sess_use_database']  = TRUE;
  $config['sess_table_name']    = 'ci_sessions';
  $config['sess_match_ip']  = FALSE;
  $config['sess_match_useragent']   = TRUE;
 $config['sess_time_to_update'] = 300;

需要帮助.. 目的是向所有在线用户显示。

我正在使用CI版本2.1.3

3 个答案:

答案 0 :(得分:3)

服务器永远不知道用户关闭浏览器。 'sess_expire_on_close'表示在重新启动浏览器时是否会写入并重新使用用户的cookie。

要检测并结束会话,您必须执行此问题中概述的检查: javascript detect browser close tab/close browser

然后执行

$this->session->sess_destroy();
<{3>}中的

答案 1 :(得分:1)

会话结束不会删除数据库中的数据。它基本上将会话cookie生存期的值设置为0,这意味着浏览器将在关闭时删除cookie(强制新会话)。在垃圾收集得到之前,数据库表中的条目不会被清除,因为默认情况下,浏览器无法向服务器发出“回调”以通知它正在关闭以便删除会话在DB中记录。

出于您的目的,您可能希望将活动用户定义为DB中的记录小于会话生命周期的用户。

答案 2 :(得分:-1)

尝试配置application / config / config.php

$ config [&#39; sess_expiration&#39;] = 0;
$ config [&#39; sess_expire_on_close&#39;] = TRUE;

这应该没问题