重置bootstrap-session-timeout而不刷新页面

时间:2017-02-03 12:21:46

标签: javascript php twitter-bootstrap session

我们正在使用Orangehill fork of bootstrap-session-timeout,它运行良好,但有一个例外,我无法弄清楚如何重新启动它。想知道是否有人可以为我开灯。

Site用PHP编写,包含Bootstrap3和JQuery3。

每个页面的页脚都包含激活bootstrap-session-timeout的脚本,但不会使用每次移动鼠标时重置计时器的选项。如果超时期限内没有活动,则会弹出功能区,并为用户提供“保持连接或退出”选项。

这适用于网站,但我们拥有的是订单编辑页面,用户可以在其中添加,删除和更新订单上的行。编辑期间不刷新页面。要添加,删除或更新订单行,链接调用JS函数,JS函数又调用PHP脚本来执行更新,JS然后用于动态更新屏幕内容。

每次用户更新订单时,我们都需要重置会话超时计数器。

理想情况下,我们希望在对页面内容进行更新时调用函数,但是我们的JS中似乎没有单独的bootstrap-session-timeout函数可用。

希望这是有道理的,并提前感谢任何帮助/指针。

1 个答案:

答案 0 :(得分:0)

由于没有人回答这个问题,我认为添加我的解决方案是可行的,这可能不是最好的,但确实有效。

基本上,我们有一个订单输入页面,在输入订单时保持不变。即使用户可能在页面上做某事(我们关闭了关键选项),倒数计时器仍然继续。因此,即使用户可能在5分钟前最后更新了订单(通过Ajax调用PHP API来处理更新),倒计时器也不会重置,因为页面尚未重新加载。

我的解决方案是在每次加载PHP脚本时将时间戳写入由PHP session-id键入的文件。这适用于主页面或API。因此,当倒数计时器结束时,将调用超时脚本,并检查文件中的最后一个活动时间戳是否在超时截止点之前或之后。如果是,则调用注销脚本,但如果不是,则刷新当前页面,这将导致倒计时器重新加载。