SELECT
SHA1(CONCAT(users.salt, '$password')) = users.password
FROM users
WHERE
users.username = '$username'
如果存在$username
,则返回true,无论你在/ /
如果用户名和密码正确,我只希望它返回true
我想要的是,我希望它能够获取盐和密码,将其与sha1重新进行比较并将其与用户输入进行比较
我做错了什么?
答案 0 :(得分:2)
您没有说出哪个数据库,但我不相信您可以像在您所做的那样在select子句中编写关系表达式。试试
SELECT username
FROM users
WHERE
users.username = '$username' and
SHA1(CONCAT(users.salt, '$password')) = users.password
如果你找回一行匹配的密码;如果没有回来的行,则密码不匹配或用户不存在。
答案 1 :(得分:0)
密码检查应该在where子句中:
SELECT
'success' as Result
FROM users
WHERE
users.username = '$username'
AND SHA1(CONCAT(users.salt, '$password')) = users.password
如果检查成功,这应该返回一列一行;否则,它返回一个空的行集。
答案 2 :(得分:0)
SELECT CAST(1 AS bit)
FROM users
WHERE
username = '$username' AND
SHA1(CONCAT(salt, '$password')) = password