2010-01-03 66 views
1
你把
SELECT 
    SHA1(CONCAT(users.salt, '$password')) = users.password 
FROM users 
WHERE 
    users.username = '$username' 

如果$username存在,這將返回true,不管什麼密碼=/SQL幫助CONCAT

II只希望它返回true,如果用戶名和密碼是正確的

什麼我想要的是,我希望它採取鹽和密碼,重新shaha與sha1並與用戶輸入比較

我做錯了什麼?

回答

2

你沒有說哪個數據庫,但我不相信你可以像你所做的那樣在select子句中編寫一個關係表達式。嘗試

SELECT username 
FROM users 
WHERE 
    users.username = '$username' and 
    SHA1(CONCAT(users.salt, '$password')) = users.password 

如果你得到一個行回來匹配的密碼;如果沒有行返回,則密碼不匹配或用戶不存在。

0

密碼檢查應在where子句中:

SELECT 
    'success' as Result 
FROM users 
WHERE 
    users.username = '$username' 
    AND SHA1(CONCAT(users.salt, '$password')) = users.password 

這應該返回與一列一列,如果檢查成功;否則,它將返回一個空行集。

0
SELECT CAST(1 AS bit) 
FROM users 
WHERE 
    username = '$username' AND 
    SHA1(CONCAT(salt, '$password')) = password