我试图登录一个用户,但从下面的查询中始终没有得到任何结果。如果我只是查询用户名,就可以了。数据库里一切都很好。
非常感谢您的帮助!
谢谢
$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()是处理密码的最佳方法还是有更好的方法?
最佳答案
已编辑的解决方案
你说没有md5的代码工作得很好,但是没有md5的代码。当您更改代码以加密密码时,是否也将数据库条目(我想是手动)更改为md5散列?
记住,md5所做的只是将密码转换成一堆乱七八糟的字符。因此,您需要将这些乱七八糟的数据存储在数据库中,并使用它们与您为用户输入创建的md5散列进行比较。
确保数据库中的密码字段是CHAR(32)。
md5()创建32位哈希
(总是32个字符),将字段的大小设置为32,以避免在插入时被截断。
除此之外,我看剧本没有什么问题。尝试将从数据库中提取的内容作为密码和$pwdPassword进行回显-这可以让您了解出了什么问题。
关于php - 为什么这个简单的查询不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9884964/