[英]Why won't this simple query work?
我正在尝试登录用户,但我总是从下面的查询中得不到任何结果。 如果我只是查询用户名,它就可以了。 数据库中的一切看起来都很好。
任何帮助非常感谢!
谢谢
$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;
}
}
UPDATE
如果我尝试上面的脚本,而不使用md5(),它工作正常。 所以我猜问题是md5()。 md5()是处理密码的最佳方式还是有更好的方法?
你说代码工作正常没有md5但它不适用于md5。 当您更改代码以加密密码时,您是否还将数据库条目(手动我想)更改为md5哈希?
请记住,所有md5都会将您的密码变成一堆乱码。 因此,您需要将这些乱码存储在数据库中,并使用它来与您创建的用户输入的md5哈希进行比较。
确保数据库中的密码字段为CHAR(32)。
md5()创建一个32位哈希
(总是32个字符),将字段的大小设置为32,以避免在插入时被截断。
除此之外,我没有看到脚本有任何问题。 尝试回显你从数据库中取出的密码和$ pwdPassword - 这可以让你知道出了什么问题。
"SELECT * FROM users WHERE username='$username' AND password='".md5($password)."'";
我不相信你需要再次调用md5()函数,因为你已经声明了$ pwdPassword
这可能有效:
"SELECT * FROM users WHERE username='$username' AND password='" . $pwdPassword . "'";
密码可能是保留名称,请尝试转义它
`password`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.