检查用户当前是否在线(直播)

时间:2011-12-13 14:44:34

标签: php jquery

我最近完成了我的申请,但我遇到了一个很大的问题。我只需要允许一个用户一次访问它。每次都有一个可供每个用户访问的索引页面和“开始”按钮。当用户单击开始时,应用程序锁定,其他ppl需要等到用户完成。当用户关闭选项卡/浏览器时,应用程序必须自动解锁。每个用户都有5分钟的时间来使用我的应用。 我部分解决了我的问题,但它仍然无法正常工作 - 在每个站点上我设置了jquery脚本,每5秒触发一次服务器上的“extend.php”文件($ .get()函数)。 php文件修改time.txt文件(将其更改为time()+ 5)并且intex站点上的脚本检查(time()> time.txt内容)。因此,当使用关闭选项卡/浏览器时,可以访问该应用程序。显然我的应用程序也基于会话(当用户关闭浏览器时,他失去了访问权限)。 在某些计算机上它根本不起作用(似乎jquery不会触发extend.php文件,它使我的应用程序始终可访问)。 所以我的问题是:你有没有其他方法可以解决我的问题?

descr可能很乱,但我想描述一切顺利;)

的问候。

4 个答案:

答案 0 :(得分:2)

尝试使用jQuery卸载功能,这样当他们点击关闭按钮时,您的Web浏览器会在用户退出之前执行最后一行脚本。例如:

$(window).unload(function(){

   "your php function to unlock the app here"

});

希望这有帮助。

答案 1 :(得分:1)

你的方法没问题,应该可行。是的,node.js或任何其他服务器端javascript可用于执行相同操作,但触发脚本是迄今为止最简单的解决方案。你真的应该集中精力进一步研究它不起作用的机器。

答案 2 :(得分:1)

如果限制为5分钟,则将其设置为5分钟后过期。您可以在jquery中使用计数器来显示可用的时间。当它到期时,然后通知用户时间到了。一旦时间到期或用户完成应用程序,将time.txt更新为time(),或者您可以在应用程序可访问时正常处理它。没有投票和1次更新。

答案 3 :(得分:0)

当用户在线时,您可以在mysql表上放置LOCK,在离线时将其解锁。

唯一的问题是,如果您的代码忘记解锁。