当用户尝试登录时,有两种方法检查用户是否有效。更好地检查用户名和密码或只是用户名?
方法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