我有用户名为users
和日志表名为ulog
。每次用户登录时,页面都会在日志表中添加新记录。预防用户登录如果用户已经登录
为了防止错误,在登录之前,我正在检查用户是否已经登录或不知道(我知道它并不那么重要,还有其他方法可用于此目的:对于前者,我可以通过检查对于cookie或会话也是如此,但我感兴趣的是如何用我的想法做到这一点)。
如果在ulog
表中有关当前正在尝试登录的用户的表中至少有一行,则问题是代码完美工作。如果用户想要第一次登录,则会出现问题:代码“飞过”if ($stmt->num_rows > 0) {
语句并选择else
。 (因为num_rows返回0)
如何修改我的查询以处理这两种情况:第一次登录时,第二次,第三次......时间?
我的PHP侧登录代码看起来像那样。
$stmt = $db->prepare("SELECT u.id, u.fname, u.lname, u.mname, u.level, u.pass, u.salt, u.approved, u.ban, u2.logged_in FROM `users` AS u, `ulog` AS u2 WHERE u.email=? AND u2.user_id=u.id") or die($db->error);
$stmt->bind_param("s", $email) or die($stmt->error);
$stmt->execute() or die($stmt->error);
$stmt->store_result();
if ($stmt->num_rows > 0) {
$stmt->bind_result($id, $fname, $lname, $mname, $level, $db_pass, $salt, $approved, $ban, $logged_in) or die($stmt->error);
$stmt->fetch() or die($stmt->error);
if ($logged_in == 0) {
}
else die("You're already logged in");
}
else die("There is no such email in db");
修改代码,请 –
尝试运行查询,让我知道它是如何工作。希望它能做到这一点,如果我输入正确的话 – abelito
是的,很好的工作朋友。现在我正在检查'if($ logged_in!= 1){' –