MySQL PASSWORD()不能与SELECT语句一起使用

时间:2014-04-18 08:08:24

标签: php mysql sql passwords

mysql中的密码功能在插入和更新时可以正常使用,例如:

$query_insert = "INSERT INTO `account`(`Gender`, `Birth_date`, `Name`, `UserName`, `Password`, `Email`, `Type`) VALUES ('" . $gender . "' , '" . $birthdate . "' , '" . $name . "' , '" . $username . "' , password('" . $password . "') , '" . $email . "' , 'Member' ) ";    

正确插入哈希密码

但是当我尝试在登录代码中检索它时,它不起作用!

mysqli_query($con, "SELECT * FROM account where UserName = '" . $username . "' AND password = password('" . $password . "') ");

我尝试使用

mysqli_set_charset($con, 'utf8');

但结果是一样的 我甚至尝试在PHPMyAdmin中使用它作为选择查询,并且出现同样的错误!

更新

我用了MD5() 它和我一起工作了!

1 个答案:

答案 0 :(得分:1)

正如PASSWORD()所述:

  

注意

     

PASSWORD()函数由MySQL服务器中的身份验证系统使用;你应该在你自己的应用程序中使用它。为此,请考虑使用MD5()SHA2()。有关在应用程序中安全地处理密码和身份验证的详细信息,另请参阅RFC 2195, section 2 (Challenge-Response Authentication Mechanism (CRAM))

此外,如果你正在推出自己的身份验证系统(我强烈不鼓励),你真的应该同时阅读The definitive guide to form based website authenticationSecure hash and salt for PHP passwords