2010-01-03 71 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