我有一些問題我是新來的PHP。我有一個登錄系統,現在我試圖實現禁止和用戶激活系統,但我在登錄腳本中遇到了一些問題。下面是我的腳本代碼:禁止和用戶激活系統,但我在登錄腳本
<?php
$query = "SELECT id, username, password, salt, email, firstname, lastname, active, banned FROM users WHERE username = :username ";
$query_params = array(
':username' => $_POST['username']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$row = $stmt->fetch();
$login_ok = false;
$login_match = false;
$login_active = false;
$login_banned = false;
if($row)
{
$check_password = hash('sha256', $_POST['password'] . $row['salt']);
if($check_password === $row['password'])
{
$login_match = true;
}
if($row['active'] == 1) {
$login_active = true;
}
if($row['banned'] == 1) {
$login_banned = true;
}
if($login_match && $login_active && !$login_banned) {
$login_ok = true;
}
}
if($login_ok)
{
unset($row['salt']);
unset($row['password']);
$_SESSION['user'] = $row;
header("Location: index.php");
die("Redirecting...");
}
else
{
if(!$login_match) { echo "Wrong username/pasword.";}
if(!$login_active) { echo "Account not activated, check your email";}
if($login_banned) { echo "Your account is banned";}
}
?>
在我的數據庫我有2列主動和取締,其中0表示該帳戶被激活,並沒有被禁止,以及1如果帳戶未激活或者是被禁止的。
如何向用戶顯示不同的消息?如果用戶輸入錯誤的用戶名或密碼,他將從最後的else {}中獲得全部三條消息。我想像這樣向用戶顯示消息: 如果用戶名或密碼錯誤,只顯示錯誤的用戶名/密碼。並忽略$ login_active $ login_banned。 如果用戶名/密碼正常,但帳戶未激活,帳戶未激活,請檢查您的電子郵件。並忽略$ login_banned開關。 如果用戶名/密碼正常,但帳戶被禁止顯示您的帳戶被禁止並忽略$ login_active開關。
對不起,如果我寫得太多了,我希望我解釋得對。
' 「==」'是一個邏輯運算符。 '$ login_active == true;' 這樣沒有意義。嘗試'$ login_active = true;' – SchautDollar 2013-03-07 19:11:35
錯誤的網站在這裏,我發現我的問題後,但我不知道熱點編輯 – 2013-03-07 19:13:01
在這篇文章的標籤下有一個編輯選項。 – SchautDollar 2013-03-07 19:13:52