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() 它和我一起工作了!
答案 0 :(得分:1)
正如PASSWORD()
所述:
注意
PASSWORD()
函数由MySQL服务器中的身份验证系统使用;你应该不在你自己的应用程序中使用它。为此,请考虑使用MD5()
或SHA2()
。有关在应用程序中安全地处理密码和身份验证的详细信息,另请参阅RFC 2195, section 2 (Challenge-Response Authentication Mechanism (CRAM))。
此外,如果你正在推出自己的身份验证系统(我强烈不鼓励),你真的应该同时阅读The definitive guide to form based website authentication和Secure hash and salt for PHP passwords