【问题标题】:Preventing session expiration if user active如果用户处于活动状态,则防止会话过期
【发布时间】:2011-10-05 09:29:53
【问题描述】:

我有带有基本登录系统的迷你内容管理系统。我想知道,如果用户为 ex 活动,如何防止会话过期。输入内容或其他内容?有什么办法吗? 每次交互发生时如何重新准备会话?

【问题讨论】:

  • 您可能希望在页面上添加某种事件侦听器。当某些交互事件发生时(例如焦点改变、页面滚动、输入字符等),您将向服务器上的 ping-type 页面发送 ajax 请求。在 php 页面中,您可以“重新武装”您的会话。
  • 我有自动提交功能,假设每 30 秒将表单数据发布到 php。如何在每个 for ex 中重置/延长会话时间。 db 查询(在 PHP 中)?
  • 如果您已经每隔很短的时间联系服务器,那么在您的 PHP 中调用 session_start() 就足够了。只要调用间隔小于 php.ini 中的session.gc_maxlifetime 设置,就可以了。

标签: php session


【解决方案1】:

您需要将事件处理程序附加到某些用户交互事件,例如鼠标移动、按键操作或类似事件。如果您可以使用 ajax 从服务器请求某些内容。这将使会话保持活动状态。

【讨论】:

  • 我有自动提交功能,假设每 30 秒将表单数据发布到 php。如何在每个 for ex 中重置/延长会话时间。 db 查询(在 PHP 中)?
  • 您的表单提交的哪个php页面只有在它的顶部有 session_start() 并且应该更新会话超时。如果看起来不是,那么可能还有其他问题?
【解决方案2】:

让事件监听器监听任何用户交互事件并让它调用一个带有会话活动的简单 PHP 页面 [示例:session_start()]。

但在监听 mousemove 事件时要格外小心,因为它可能会通过发出大量后续的 AJAX 请求来阻塞您的服务器。您可以附加一个计时器并控制拨打电话的频率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 2011-12-16
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2022-01-23
    • 2011-01-06
    相关资源
    最近更新 更多