1

我有 MYSQL 表,里面有用户。用户可以使用 PHP 代码登录。他们的名字存储在 SESSION 变量中。如何检查用户是否已经在另一台计算机上登录以禁止他们再次登录?

设想:

计算机 1:
USER1 已登录

计算机 2:
USER1 尝试再次登录,但他们不能,因为他们已经在另一台计算机上登录。

4

2 回答 2

1

Try to create a column "isLogged" in the databank and set it to true o false when the user starts or end a session. I was doing that and works fine.

于 2012-12-05T16:22:43.360 回答
0

为了确保他不会在另一台计算机上再次登录,您可以针对数据库更新一个字段以将他标记为已登录,然后在用户尝试登录时检查此字段。

<?php

if ($_SESSION["MySession"] != "") {
  //Update database field to set this user as actively browsing. 
  //Also set a timestamp so you know when he last visited a page.
}

?>

但是,用户必须在另一台计算机上物理注销才能在新计算机上再次登录。您也可以实现一个计时器来清除数据库中的字段,这样他就可以在一定时间不活动后登录。

您可以创建一个 cron 并每 5 分钟运行一次,或者您可以再次在页面顶部运行一些代码,将所有字段设置为 false 在过去几分钟内user_logged_in它们没有处于活动状态。x

所以按顺序:

  1. 用户登录网站,$_SESSION["UserName"]设置为用户名。
  2. 在每个页面的顶部,您检查会话以查看用户名会话是否有效并更新数据库中的用户表以表明他正在积极浏览(使用时间戳字段)。
  3. 检查用户表并清除用户在 X 分钟内处于非活动状态的所有登录标志。
于 2012-12-05T16:17:31.487 回答