【发布时间】:2016-08-16 01:03:47
【问题描述】:
目前我得到了这个:
$password = mysql_real_escape_string($_POST['password']);
然后我用这个检查密码:
$password_q = mysql_query ("SELECT password FROM ppl WHERE email='$email'");
$password_result = mysql_result ($password_q, 0);
if (!password_verify($password, $password_result)) {
$error = 'Wrong password.'; } else {
这里是否需要使用 mysql_real_escape_string 或者我应该删除它? 这是代码中唯一使用 $password 变量的地方。
我应该提到我一直坚持使用旧的 MySQL API。
【问题讨论】:
-
还记得您的其他问题中的this comment 吗? ;-) 答:。不要。
-
就个人而言,看到到目前为止给出的 2 个答案,请不要解释为什么不应该这样做。这个问答是stackoverflow.com/questions/36628418/cleansing-user-passwords,可能是重复的。哦,不客气。
-
例如。如果您的密码包含
$符号,则其后面的所有内容都将被忽略/丢弃。 -
不过我很好奇。您在另一个问题中说您一直坚持使用 MySQL_ API。
password_verify()与 PHP 5.5 一起使用,那么为什么不使用 MySQLi_ 或 PDO API?这样,您就可以使用准备好的语句。 -
嗯,好的。好吧,你不能在同一次运行中混合使用这些 API,不。编辑:@JayBlanchard 刚刚给了你一个更好的解释。 ;-) 例如:您不能使用 PDO 连接中的连接变量连接 PDO API 并使用 MySQL_ 进行查询。在 Stack stackoverflow.com/questions/17498216/… 上咨询以下内容