【问题标题】:Is it possible to make an async call and not refresh the session in PHP?是否可以进行异步调用而不刷新 PHP 中的会话?
【发布时间】:2015-11-19 21:35:01
【问题描述】:

当用户会话即将到期和到期时,我会弹出一个警报。问题是如果为应用打开了多个选项卡,则会连续触发多个警报,这非常烦人。

我想在显示警报之前检查后端的会话信息。这样,如果在一个选项卡中会话即将到期(根据前端),但实际上并没有到期,因为您一直在另一个选项卡中操作,则警报将不会显示并窃取浏览器焦点。理想情况下,我希望将其保留为警报,以便第一次正确显示警告确实会引起浏览器的关注。

那么是否可以在不刷新会话的情况下发出这样的请求?

【问题讨论】:

  • 设置一个全局标志来锁定。一旦出现第一个确认弹出窗口,它就会设置标志并防止任何其他选项卡弹出相同的问题。
  • 您可以使用 localstorage、sessionstorage 或 cookie 来存储 Marc B 建议的标志。
  • 您也可以在客户端进行,例如使用localStorage(在标签之间共享/保留)。
  • 您可以使用另一个会话变量来记住您已经发送了“即将过期”响应,然后如果您收到另一个查询,则发送否定响应。

标签: javascript php session


【解决方案1】:

尝试在 JavaScript 中执行此操作是愚蠢的 - 使倒数计时器与 PHP 会话保持同步非常困难。

如果您在会话上实现硬超时,那么您必须已经在使用自定义会话处理程序 - 所以只需在您的 Ajax 响应程序中实现它的变体,它不会锁定或写回会话。

OTOH,如果您没有真正实现硬会话超时,并且您还没有使用自定义会话处理程序(我怀疑确实是这种情况)。然后只需检查会话文件上的时间戳。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多