代码之家  ›  专栏  ›  技术社区  ›  Phill Pafford

如果会话即将过期,请通知用户,并选择续订会话

  •  6
  • Phill Pafford  · 技术社区  · 14 年前

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

    如果你需要的话,这里有一个视频 this page

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

    3 回复  |  直到 14 年前
        1
  •  4
  •   Pekka    14 年前

    这相对容易:

    • 构建一个JavaScript计时器,使用 setTimeout

    • 拥有 设置超时 函数显示确认对话框,例如使用 jQuery UI Dialog

    • 如果用户想要延长会话,可以向PHP文件发出Ajax请求。如果文件使用会话,这将“影响”会话的生存期

    • 设置超时

        2
  •  3
  •   Magnar    14 年前

    • 长途电话
    • 意外的拜访

    如果有一个确认对话框,当你的用户回来的时候,会话已经结束了,只会增加混乱。

    取而代之的是:

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

    -->快乐用户!:-)

        3
  •  0
  •   Robin    14 年前

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

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

    setInterval 函数以适当的间隔(即小于会话GC间隔)调用此脚本。因为图像是由PHP提供的,它会更新您的会话,所以理论上,只要用户的会话仍在您的站点上,它们就不会结束。