我的网站有一个登录脚本,用于检查mysql表中的用户数据。该表有几列(名称,用户名,通行证等),最重要的(为了这个问题)是'用户名'和'在线'列。 “在线”列是BOOL值(在线为真时为1,在为假时为0)。当用户成功登录时,$ _SESSION变量将从表中设置为其数据,并使用以下内容将表中的“在线”值从“0”更改为“1”。
mysql_query("UPDATE Members SET Online='1' Where UserName='$username' AND Online='0'");
脚本检查'online'的值,如果它为1,则它们无法登录,回显一条消息,指出用户已经登录。
接下来,该网站的每个页面都有一个“注销”链接,该链接运行一个脚本,该脚本取消设置所有$ _SESSION变量,并将在线值从1更新回0。
mysql_query("UPDATE Members SET Online='0' Where UserName='$username' AND Online='1'");
这就是问题所在。如果用户关闭了浏览器窗口,会话会因php函数的问题而自动结束,这很好,因为这就是我想要发生的事情。但是,如果浏览器关闭,我还想更新表格。否则,当用户关闭浏览器时,由于他们的在线值仍为1,他们将无法重新登录。我知道使用onunload或onbeforeunload将无法正常运行,因为每次刷新或运行时都会运行改变页面。我知道我可能需要使用某种会话超时,但我看到的每个答案都没有完全解释如何去做。我通常只看到人们发布代码而没有解释它究竟是如何工作的或它应该如何使用。如果有人能帮助我,我会非常感激。
提前感谢。
答案 0 :(得分:0)
您应该使用AJAX自动刷新任何脚本,如果最后一个活动> 5分钟 - > SQL查询。