我正在尝试登录用户,但我总是从下面的查询中得不到任何结果。如果我只是查询用户名,它就可以了。数据库中的一切看起来都很好。
非常感谢任何帮助!
由于
$login = 1;
$username = 'james';
$password = 'myPassword';
if ($login == 1)
{
$pwdPassword = md5($password);
$insertUser = mysql_query("INSERT INTO users (username, password) VALUES ('$username', '$pwdPassword')");
$queryUser = "SELECT * FROM users WHERE username='$username' AND password='".md5($password)."'";
$result = mysql_query($queryUser);
if (mysql_num_rows($result) != 0)
{
echo 'success';
return;
}
else
{
echo mysql_error();
echo 'error';
return;
}
}
更新
如果我尝试上面的脚本,不使用md5(),它可以正常工作。所以我猜问题是md5()。 md5()是处理密码的最佳方式还是有更好的方法?
答案 0 :(得分:2)
你说代码在没有md5的情况下工作正常,但它不适用于md5。当您更改代码以加密密码时,您是否也将数据库条目(我想手动)更改为md5哈希?
请记住,所有md5都会将您的密码变成一堆乱码。因此,您需要将这些乱码存储在数据库中,并使用它来与您创建的用户输入的md5哈希进行比较。
确保您的数据库中的密码字段为CHAR(32)。
md5()创建一个32位哈希
(总是32个字符),将字段的大小设置为32,以避免在插入字段时被截断。
除此之外,我没有看到脚本有任何问题。尝试回复你从数据库中取出的密码和$ pwdPassword - 这可以让你知道出了什么问题。
答案 1 :(得分:1)
"SELECT * FROM users WHERE username='$username' AND password='".md5($password)."'";
我不相信你需要再次调用md5()函数,因为你已经声明了$ pwd密码这可能有效:
"SELECT * FROM users WHERE username='$username' AND password='" . $pwdPassword . "'";
答案 2 :(得分:1)
密码可能是保留名称,请尝试转义
`password`