2012-12-05 41 views
0

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

场景:

电脑1:
USER1被记录在
电脑2:
USER1尝试腿再次,但他不能,因为他已经被记录在另一台计算机上。

+0

您是不是以任何身份使用数据库来管理当前浏览网站的经过身份验证的用户? – Sampson

+0

@Jonathan Sampson什么?我无法理解。 – Dharman

回答

0

尝试在数据库中创建一列“isLogged”,并在用户开始或结束会话时将其设置为true或false。 我这样做,工作正常。

+0

但用户必须手动结束会话,如果他不这样做? – Dharman

+0

in Mysql, SET SESSION wait_timeout = 60; –

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分钟运行一次,或者您可以在页面顶部再次运行一些代码,将所有user_logged_in字段设置为false,以便在过去的x分钟内未将其激活。

所以为了:

  1. 用户登录到该网站,$_SESSION["UserName"]设置为用户名。
  2. 在每个页面的顶部,检查会话以查看用户名会话是否有效,并更新数据库中的用户表以表示他正在主动浏览(使用时间戳字段)。
  3. 检查用户表并清除用户在X分钟内处于非活动状态的所有登录标志。
+0

我知道,但跨越不同的计算机的会话会有所不同,我需要检查另一台计算机,如果用户已登录 – Dharman

+0

编辑我的答案。如果不清楚,请告诉我。 – webnoob

+0

是的,但我如何使这个计时器 – Dharman

相关问题