當用戶嘗試登錄時,有兩種方法檢查用戶是否有效。更好地檢查用戶名和密碼或只是用戶名?
方法1:執行以下查詢並檢查返回的行號是相同的1
SELECT * FROM users WHERE username = $_POST['username'] AND password = md5($_POST['password'])
方法2:執行該查詢,然後檢查密碼是否匹配。
SELECT * FROM users WHERE username = $_POST['username']
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)){
if($row['password'] == md5($_POST['password'])) $logged_in = TRUE;
}
其中一種方法比其他方法更受歡迎嗎?如果是的話,爲什麼?
但假設我使用密鑰,散列和鹽,方法1或方法2更可取? – Lars 2013-03-19 20:41:21
您將需要使用方法2來獲取鹽。 – Kermit 2013-03-19 20:42:31
但我仍然不能使用方法1,例如...「WHERE用戶名= $ _POST ['用戶名']和密碼= hashed_salted_password($ _ POST ['password'])」,那個函數爲我工作? – Lars 2013-03-19 20:45:19