我需要在当前页面上检测用户何时处于非活动状态(不是单击或键入)超过30分钟.
我认为最好使用贴在身体标签上的事件blubbling,然后继续重置计时器30分钟,但我不确定如何创建它.
我有jQuery可用,虽然我不确定这有多少实际上会使用jQuery.
编辑:我更需要知道他们是否正在积极使用该网站,因此点击(更改字段或字段中的位置或选择复选框/无线电)或键入(在输入,textarea等).如果他们在另一个选项卡中或使用其他程序,那么我的假设是他们没有使用该网站,因此应该注销(出于安全原因).
编辑#2:所以每个人都清楚,这根本不是用于确定用户是否已登录,经过身份验证或其他任何内容.现在,如果用户在30分钟内没有发出页面请求,服务器会将用户注销.此功能可防止有人花费> 30分钟填写表单然后提交表单以发现他们尚未注销的时间.因此,这将与服务器站点结合使用,以确定用户是否处于非活动状态(不是单击或键入).基本上,交易是在闲置25分钟后,他们将看到一个对话框输入他们的密码.如果他们不在5分钟内,系统会自动将其注销,并且服务器的会话将被注销(下次访问页面时,与大多数站点一样).
Javascript仅用作对用户的警告.如果JavaScript被禁用,那么他们将不会收到警告(并且大部分网站都不工作),他们将在下次请求新页面时注销.
我喜欢衡量用户在我的webapp的特定页面上花费的时间.首先,我考虑在浏览器中捕获onunload/onbeforeunload事件,并通过XMLHttpRequest通知服务器用户现在要离开:
<body onunload="userLeaves('/url/to/current/page',xxx);" ...> ... </body>
Run Code Online (Sandbox Code Playgroud)
其中xxx是呈现页面时的初始tiemstamp.
不幸的是,这个解决方案并不适用于所有浏览器(例如Opera).所以我的第二个想法是不断ping服务器.要计算访问时间,有人必须花费最后一次ping时间并从初始时间戳中减去它.但我不认为这是一个很好的解决方案,尤其是当用户打开3或5个标签并且每个标签每500毫秒触发事件时...
你会如何衡量访问时间?有人有更好的想法来获得在一个特定页面上花费的时间吗?
我正在考虑实施一个小型跟踪系统,该系统将跟踪用户的登录/注销时间,并跟踪当前登录的用户.除了跟踪用户何时注销之外,这对我来说都是有意义的.当用户单击"注销"按钮时,它很容易,该按钮调用可以使用注销时间更新数据库的功能,但是如果用户刚刚退出浏览器,该怎么办.我怎样才能创建一个能处理这个事件的函数,我猜想当用户以非正式的方式退出php应用程序时,我没有想到任何其他情况.此外,非常感谢有关此主题的在线教程的任何链接.