【问题标题】:php session is not destroying after i close site's tab on my browser? [duplicate]在我关闭浏览器上的站点选项卡后,php 会话没有被破坏? [复制]
【发布时间】:2014-09-19 06:54:02
【问题描述】:

如果我在 google chrome 上打开了我的网站选项卡,并且打开了其他选项卡,如果我关闭我的网站选项卡,会话不会破坏。要销毁会话,我需要关闭整个浏览器,包括所有选项卡。无论如何,当他们只关闭网站的标签而不是整个浏览器时,我可以注销用户吗? 我正在使用codeIgniter。配置设置如下

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

【问题讨论】:

  • 如果注销对您的应用程序至关重要,您应该放置一个注销按钮。
  • 我确实有一个注销按钮,但我想要即使用户不按注销按钮并关闭我希望他们注销的网站
  • 单击链接和关闭选项卡、打开新选项卡和手动输入页面 URL 之间没有本质区别。在这两种情况下,都没有固有的“连接丢失”或任何此类情况。关闭选项卡时结束会话是完全任意的决定;并且浏览器在此决定中不同意您的意见。换句话说:这几乎是不可能的[可靠]。

标签: php codeigniter session


【解决方案1】:

PHP 将在 24 分钟不活动后自动终止会话。 (如果这不是真的,请纠正我,但我认为是这样)如果这不是您想要的,您还可以将过期时间更改为非常短,并每隔一分钟左右通过 ajax 进行检查。

您是否将会话数据保存到数据库中?为什么不编写一个自动删除过期会话的 php 脚本。您可以使用 cronjob 启动它。

【讨论】:

  • 您可以配置会话何时失效。 24 分钟没有硬编码或任何东西。
  • 是的,我知道你可以配置它。我的意思是默认会话超时(我相信)设置为 1440 秒(24 分钟)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 2013-06-11
  • 2017-12-02
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 2020-07-16
相关资源
最近更新 更多