我有一個登錄腳本,可以檢查用戶是管理員還是測試用戶。我寫這篇文章是為了檢查其中任何一個,因為當我將我的網站設置為維護模式時,它不會允許除管理員和測試用戶之外的任何人登錄。問題是,就目前而言,我只能有 1 個用戶才能使其正常工作。所以要么是管理員,要么是測試用戶。我想兩者兼得。我知道并閱讀了 PHP 和/或語句,但這不適用于我正在嘗試的內容。這是非?;镜膇mo。 if($user === false){ $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>'; } elseif ($username <> admin or $username != testuser){ header('Location: /maint.php'); exit; }這有效 if($user === false){ $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>'; } elseif ($username <> admin){ header('Location: /maint.php'); exit; }我什至嘗試添加管道而不是 or 但這確實有效。 if($user === false){ $_SESSION['message'] = '<br /><div class="text-center alert alert-danger" role="alert">Your username is incorrect. Please try again</div>'; } elseif ($username <> admin || $username != davidm){ header('Location: /maint.php'); exit; }如果兩者都在腳本中,則兩者都失敗并被重定向到 maint.php有人在這里看到我的錯誤嗎?
2 回答

HUWWW
TA貢獻1874條經驗 獲得超12個贊
這不是運營商的問題,錯誤在邏輯上。
if ($username != 'admin' || $username != 'testuser') header('Location: /maint.php');
意味著,如果用戶名不是admin
,或者如果用戶名不是testuser
,則重定向。這聽起來不錯,除了它總是會重定向,因為如果用戶名是admin
那么它就不是testuser
,反之亦然。你實際上想要:
if ($username != 'admin' && $username != 'testuser')

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
這應該有效:您沒有圍繞“amin”和“testuser”的引用。在帶有 AND 或 OR 的 if 語句中,我總是在每個部分周圍使用額外的 ()。它更適合閱讀并且有助于避免錯誤。
if($user === false){
$_SESSION['message'] = '<br /><div class="text-center alert alert-danger"
role="alert">Your username is incorrect. Please try again</div>';
} elseif ( ($username != "admin") or ($username != "testuser") ){
header('Location: /maint.php');
exit;
}
- 2 回答
- 0 關注
- 108 瀏覽
添加回答
舉報
0/150
提交
取消