|
|
1
7
如果您使用轮询来获取聊天数据,那么如果在给定的时间内没有从客户机收到轮询请求,那么应该终止会话。 客户:
服务器:
|
|
|
2
1
我建议您使用Alexanders方法,但在大多数情况下,设置间隔时间并不能单独解决这个问题。因为用户可能空闲了一段时间,并且可能超过了超时时间。 为了避免这种情况,你需要在这个基础上再添加一个条件。
|
|
|
3
1
是的,亲爱的,没问题,但是第二件事,正如您所指定的,服务器没有收到任何响应,在我的代码服务器中,只检查应用程序会话,它会找到它,这样它就可以工作了。我想要的是,如果用户不注销,那么页面将被终止,然后我们如何从客户端调用任何Ajax或XMLHttp请求,以将应用程序会话设置为脱机。 所以请大家告诉我,这是唯一不顺利的事情。谢谢你的回复。 |
|
|
4
1
正如您所说,事件window.onbeforeunload在用户单击链接或刷新页面时激发,因此即使结束会话也不好。 但是,您可以在页面上放置一个javascript全局变量,以标识不应触发注销的操作(例如,通过使用来自onbeforeonload的Ajax调用)。 下面的脚本依赖jquery
此脚本可能包含在所有页面中
让我们看一下这个代码:
全局变量是在页面级别定义的。如果此变量未设置为true,则事件windows.onbeforeonload将终止会话。 将事件处理程序附加到页面中的每个链接和表单,以将此变量设置为true,从而防止在用户仅提交表单或单击链接时终止会话。
如果用户关闭浏览器/选项卡或离开,会话将终止。在这种情况下,全局变量没有设置为true,脚本将对要结束会话的任何URL执行Ajax调用。 此解决方案是服务器端技术不可知论。它没有经过严格的测试,但在我的测试中似乎效果良好。 附言:我已经把这个答案贴在 this question . 我不确定我应该回答多个类似的问题,还是发表一篇参考文章? |
|
|
5
1
如果您拥有sessionid cookie的控制权,只需将其生存期设置为0,这样就可以关闭浏览器上的会话。可以从服务器端控制打开窗口上会话的生存期,存储会话中最后一次看到的时间并进行检查。
在客户方,你可以使用丹尼尔·梅洛的答案。我用它换了一个零钱:
唯一悬而未决的问题是,我还不能将事件连接到输入类型[按钮],我已经用原始代码完成了它,但所有的事情都可以工作。 |
|
|
Erik · PHP:确定会话过期时间 2 年前 |
|
|
xms · PHP HTTPOnly Cookie及其对会话的影响 2 年前 |
|
|
Tunahan Keklik · 如果用户仍在网站上时会话过期怎么办 2 年前 |
|
|
J.H · Nestjs服务器在Vercel部署一段时间后自动重新加载 2 年前 |
|
|
Michael Ding · Rails上的默认会话到期问题 2 年前 |
|
|
Patrick Visi · Zitadel日常创建服务用户 2 年前 |
|
|
newbie_php · php会话值丢失 2 年前 |