我有这样的代码:
include ("config.php");
$username = $_POST['username'];
$password = $_POST['password'];
$do = $_GET['do'];
if($do=="login")
{
$cek = mysql_query("SELECT password, user_level FROM t_users WHERE username='$username' AND password='$password'");
if(mysql_num_rows($cek)==1)
{
$c = mysql_fetch_array($cek);
$_SESSION['username'] = $c['username'];
$_SESSION['user_level'] = $c['user_level'];
if($c['user_level']=="supervisor")
{
header("location:supervisor.php");
}
else if($c['user_level']=="user")
{
header("location:home.php");
}
else if($c['user_level']=="root")
{
header("location:administrator.php");
}
else if($c['user_level']=="manager")
{
header("location:manager.php");
}
else if($c['user_level']=="admin")
{
header("location:admin.php");
}
else if($c['user_level']=="director")
{
header("location:director.php");
}
}
else
{
header('Location: index.html');
}
}
else if($do=="logout")
{
date_default_timezone_set("Asia/Jakarta");
$last_logged_out = date("j-F-Y, G:i ");
$ip_address=$_SERVER['REMOTE_ADDR'];
mysql_query("update t_users set last_logged_out='$last_logged_out', ip_address='$ip_address' WHERE username='$_SESSION[username]'");
unset($_SESSION['username']);
unset($_SESSION['user_level']);
header("location:index.html");
}
如果有人登录并且某人使用相同的用户名登录的时间或不同时间,我该如何给出功能代码,然后我希望系统将通知该用户已经登录,因此具有相同用户名的用户无法登录,直到用户在注销之前。
有人可以帮助我吗?谢谢。
尝试在会话中添加状态。例如,如果用户已登录,则状态= 1,反之亦然,因此每次用户尝试登录时,如果发生这种情况,您可以自由地执行任何您想要的操作。干杯。
当用户登录时,在数据库中设置一列,例如 loggedin
1 并在后续登录时检查该列是否设置为 1,如果是,则不允许登录,直到使用该用户名登录的人注销,则需要将该列设置为 0 以允许后续登录。
您可能需要某种超时,以便没有人可以登录并永远以该用户身份登录。
1) 读取 http://php.net/manual/en/function.mysql-real-escape-string.php
2)您必须将有关登录用户的信息存储在一个地方,您可以在其中为任何用户获取信息(即不是_SESSION美元)。例如,您可以将其存储在数据库中。
但是您的问题是,如何知道该用户登录了oout。如果用户不注销(仅关闭网络浏览器),则用户登录将被挂坠"预告"。您可以考虑一些超时 - 如果用户在 Web 上执行任何操作的时间超过 1 小时,则当任何其他用户尝试登录时,您将他注销。(每次用户在您的 Web 上执行任何操作时,都应更改超时)。