1

我的网站有一个登录脚本,可以检查 mysql 表中的用户数据。该表有几列(名称、用户名、密码等),最重要的(为了这个问题)是“用户名”和“在线”列。“在线”列是一个 BOOL 值(在线为真时为 1,为假时为 0)。当用户成功登录时,$_SESSION 变量被设置为表中的数据,我使用以下内容将表中的“在线”值从“0”更改为“1”。

mysql_query("UPDATE Members SET Online='1' Where UserName='$username' AND Online='0'");

该脚本检查“在线”的值,如果它为 1,则他们无法登录,并回显一条消息,说明用户已登录。

接下来,该站点的每个页面都有一个“注销”链接,该链接运行一个脚本,该脚本取消设置所有 $_SESSION 变量并将在线值从 1 更新回 0。

mysql_query("UPDATE Members SET Online='0' Where UserName='$username' AND Online='1'");

这就是问题所在。如果用户关闭浏览器窗口,由于 php 的功能,会话会自动结束,这很好,因为这是我想要发生的。但是,如果浏览器关闭,我也想更新表格。否则,当用户关闭浏览器时,他们将无法重新登录,因为他们的在线值仍然是 1。我知道使用 onunload 或 onbeforeunload 将不起作用,因为每次刷新或换页。我知道我可能需要使用某种会话超时,但是我看到的每个答案都没有完全解释如何去做。我通常只看到人们发布代码而没有解释它是如何工作的或应该如何使用它。如果有人可以帮助我,我将不胜感激。

预先感谢。

4

1 回答 1

0

您应该使用 AJAX 自动刷新任何脚本,如果最后一个活动 > 5 分钟 - > SQL 查询。

于 2013-08-24T19:06:28.290 回答