【发布时间】:2016-04-21 14:30:31
【问题描述】:
mysql_real_escape_string的最佳使用方式是什么,开头是这样的吗:
$email = mysql_real_escape_string($_POST['email']);
$qemail = mysql_query ("SELECT email FROM ppl WHERE email='$email'");
或者在最后是这样的:
$email = $_POST['email'];
$qemail = mysql_query ("SELECT email FROM ppl WHERE email='". mysql_real_escape_string($email) ."'");
整个网站都在使用 mysql,所以我必须将它保存在 mysql 中。问题是,我不想到处使用 mysql_real_escape_string (代码看起来令人困惑和可怕)。我只想在 $_POST 的开头使用它,但这是否足够?
有些人建议最好在查询中使用它,但我不明白为什么。
【问题讨论】:
-
这个强制是怎么回事?我还没有在 meta 上找到任何关于 @Carcigenicate 最近经常看到的内容。不这样做会受到惩罚吗? 哈哈
-
主要基于意见
-
@Fred-ii- SO 不是强制性的,不。这是半个笑话。每次我看到 OP 使用已弃用的 mysql 的问题时,总会有人建议切换到 PDO 或 mysqli。
-
mysql_real_escape_string()将在变量/值中转义引号。因此,如果这些变量(在这种情况下为$email)用于查询,并且查询 only,则将$_POST['email']传递给mysql_real_escape_string($_POST['email'])prior 到查询很好。但是,如果您计划使用这些变量 post 查询,如果您的变量现在包含转义引号(如果适用),请不要感到震惊。 -
然后拿起你的枪,把猫带进来。 ;-)
标签: php mysql security mysql-real-escape-string