Php MySQL密码()不';不能使用SELECT语句
mysql中的密码功能在插入和更新时可以很好地使用,例如:Php MySQL密码()不';不能使用SELECT语句,php,mysql,sql,passwords,Php,Mysql,Sql,Passwords,mysql中的密码功能在插入和更新时可以很好地使用,例如: $query_insert = "INSERT INTO `account`(`Gender`, `Birth_date`, `Name`, `UserName`, `Password`, `Email`, `Type`) VALUES ('" . $gender . "' , '" . $birthdate . "' , '" . $name . "' , '" . $username . "' , password('" . $pa
$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中使用它作为select查询,并且出现了相同的错误
更新
我使用了MD5()
而且它对我起作用了 如以下文件所述:
注
该功能用于MySQL服务器中的认证系统;您不应该在自己的应用程序中使用它。为此,考虑或替代。另请参阅,以获取有关在应用程序中安全处理密码和身份验证的更多信息
另外,如果您正在运行自己的身份验证系统(我强烈反对),您真的应该同时阅读和。“它不起作用”并不是mysql发出的错误消息。@user3504563:因此只能得出结论,您没有遵循我刚才给出的任何建议(我强烈反对运行自己的身份验证系统,即“Secure hash and salt for PHP passwords”链接明确表示“永远不要使用SHA1或MD5散列密码!现代破解程序可以分别超过每秒600亿和1800亿次散列”。“基于表单的网站身份验证的权威指南”包含了大量您无疑忽略的其他重要信息。使用MD5(),您也不必费心对密码进行哈希运算-只需将其明文存储。@user3504563-请使用PHP函数而不是fast MD5。在SQL语句中无法安全验证密码,您首先必须检索密码,然后才能使用该函数。