在jQuery中显示超时警告。
在jQuery中显示超时警告。
我目前在PHP Web应用程序中处理超时的方式如下:
- 每个页面目前都有一个在PHP中的超时检查,它会将当前时间与用户上次页面加载的时间进行比较。如果两者之间的差异超过15分钟,则销毁用户的会话,创建一个新的会话,将当前页面位置放入会话中,并将用户重定向到登录页面。
- 每个页面的标签中有一个标签,在15分钟和5秒后刷新页面(因此“调用”超时检查)
我现在正在考虑为用户添加更多的控制权,例如,如果他们在页面上工作了很长时间,我希望在超时前大约两分钟出现一个弹窗。然后,弹窗将提供继续会话的选项(通过向会话发送一个AJAX调用来刷新最后活动时间)或者退出登录。如果用户忽略了弹窗(例如,用户在其他页面上),则会将其登出。
根据使用JavaScript覆盖或禁用刷新标签,我无法重置标签,这可能意味着我必须删除该标签。根据PHP/Javascript带有警告的会话超时的唯一回答建议使用JavaScript调用重定向到登录页面,但这可以通过禁用JavaScript来绕过。
我考虑的做法是用
这种方法是否合理?我有什么遗漏的吗?是否有其他更合理的方法?
问题出现的原因是因为会话超时,需要在用户即将超时时显示超时警告。
解决方法是通过在页面中添加一段JavaScript代码来实现超时警告功能。首先,在页面的底部添加一个包含超时警告信息的
标签,并添加一个隐藏的
标签来显示超时警告的文本。然后,在页面加载完成后,通过jQuery来设置超时警告的逻辑。当用户点击超时警告的链接时,清除超时计时器并重新设置计时器,以保持会话的活动状态。当超时警告时间到达时,通过jQuery来显示超时警告的
标签,并调用JavaScript的reload方法来重新加载页面。
在以上代码中,timeoutWarning和timeout是两个计时器变量,用于控制超时警告的显示和页面的重新加载。在页面加载完成后,通过jQuery的ready方法来设置超时警告的逻辑。当用户点击超时警告的链接时,通过jQuery的click方法来清除计时器并重新设置计时器。当超时警告时间到达时,通过jQuery的fadeTo和fadeIn方法来显示超时警告的
标签,并通过clearTimeout方法来清除softTimeout计时器。当超时时间到达时,通过JavaScript的reload方法来重新加载页面。
以上代码中的1740000和1801000数字是基于一个PHP常量的值,该常量基于一个半小时的超时时间。