SELECT
SHA1(CONCAT(users.salt, '$password')) = users.password
FROM users
WHERE
users.username = '$username'
如果$username
存在,這將返回true,不管什麼密碼=/SQL幫助CONCAT
II只希望它返回true,如果用戶名和密碼是正確的
什麼我想要的是,我希望它採取鹽和密碼,重新shaha與sha1並與用戶輸入比較
我做錯了什麼?
SELECT
SHA1(CONCAT(users.salt, '$password')) = users.password
FROM users
WHERE
users.username = '$username'
如果$username
存在,這將返回true,不管什麼密碼=/SQL幫助CONCAT
II只希望它返回true,如果用戶名和密碼是正確的
什麼我想要的是,我希望它採取鹽和密碼,重新shaha與sha1並與用戶輸入比較
我做錯了什麼?
你沒有說哪個數據庫,但我不相信你可以像你所做的那樣在select子句中編寫一個關係表達式。嘗試
SELECT username
FROM users
WHERE
users.username = '$username' and
SHA1(CONCAT(users.salt, '$password')) = users.password
如果你得到一個行回來匹配的密碼;如果沒有行返回,則密碼不匹配或用戶不存在。
密碼檢查應在where子句中:
SELECT
'success' as Result
FROM users
WHERE
users.username = '$username'
AND SHA1(CONCAT(users.salt, '$password')) = users.password
這應該返回與一列一列,如果檢查成功;否則,它將返回一個空行集。
SELECT CAST(1 AS bit)
FROM users
WHERE
username = '$username' AND
SHA1(CONCAT(salt, '$password')) = password