我有用戶名爲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){' –