【问题标题】:Alert user if session is going to expire, option to renew session如果会话即将到期,则提醒用户,选择续订会话
【发布时间】:2011-04-20 23:07:00
【问题描述】:

我整天都在寻找 PHP 或 JavaScript 解决方案来执行此操作。

我想提醒用户他们的会话即将超时(弹出窗口),可以延长会话时间。

如果您在this page 上需要,这里有一张图片

编辑:

如果有帮助的话,jQuery 就是框架

【问题讨论】:

    标签: php javascript session


    【解决方案1】:

    比较简单:

    • 使用setTimeout构建一个在(会话生命周期 - 5 分钟)分钟内触发的 JavaScript 计时器

    • setTimeout 函数显示一个确认对话框,例如使用jQuery UI Dialog

    • 如果用户想要延长会话,请向 PHP 文件发出 Ajax 请求。如果文件使用会话,这将“触及”会话的生命周期

    • 发出请求后,设置另一个setTimeout,在会话即将到期时触发。

    【解决方案2】:

    我会建议一种不同的方法;无论如何,只需刷新用户的会话。大多数不必要的会话死亡发生是因为

    • 一个很长的电话
    • 不期而遇
    • 开会

    如果有确认对话框,当您的用户回来时会话已经结束 - 只会增加混乱。

    改为:

    var refresh_session = function () {
        $.get("/refresh_session.php");
    },
    
    fifteen_minutes = 15 * 60 * 1000;
    
    setInterval(refresh_session, fifteen_minutes);
    

    --> 快乐的用户! :-)

    【讨论】:

    • 这也是一个不错的选择,但我需要用户拨打电话。这是一个 6 分钟的会话,如果没有活动,我仍然需要他们退出
    • 这很公平 :-) 但是您可能应该制作自己的确认对话框,这样您就可以在知道会话已终止时再次删除它,而是通知用户发生了什么。
    • 部分会话超时是出于安全考虑——在某些情况下强制会话保持活动状态是可以的,但用户应该可以选择这样做。取决于内容的敏感程度
    【解决方案3】:

    您可以通过在 JS 计时器上返回 1x1 像素图像的脚本来回避这个问题。这个想法是你从这样的 PHP 脚本开始(不确定这里的标头调用是否完全正确..):

    header("ContentType: image/gif");
    passthru("my-1x1.gif");
    

    现在,让 javascript setInterval 函数以合适的间隔(即小于会话 GC 间隔)调用此脚本。因为图像是通过 PHP 提供的,它会更新您的会话,所以理论上您的用户会话不会结束,只要他们留在您的网站上。

    【讨论】:

    • 如果用户处于活动状态,我们会保持用户登录状态,只有在用户处于非活动状态时才会发生这种情况(因为他们正在打电话或其他什么东西),想要提醒/提供扩展选项会话到期前的会话
    • 好的,所以 X 分钟后会弹出警报,说“你想延长会话”,并且用户仍在电话中,直到 10 分钟后会话结束时才会响应已经在服务器上进行了 GC。我不认为你对用户选择的想法是好的,你被困在鸡和鸡蛋里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多