【发布时间】:2016-05-02 06:58:48
【问题描述】:
例如,此代码不会转义数据库的注释字符串:
if ($_POST['comment']) {
$comment = mysql_real_escape_string(htmlentities($_POST['comment_txt']));
$comment_insert = mysql_query("UPDATE msgs SET msg='$comment' WHERE user='$username'")
or die;
}
但是这个会:
if ($_POST['comment']) {
$comment_p = $_POST['comment_txt'];
$comment = mysql_real_escape_string(htmlentities($comment_p));
$comment_insert = mysql_query("UPDATE msgs SET msg='$comment' WHERE user='$username'")
or die;
}
为什么?为什么我不能转义 $_POST 值?为什么我必须为 $_POST 定义新的 $variable 才能转义它?这是安全虎钳。我会在某个时候转向 PDO,但目前我被旧的 mysql API 卡住了。
【问题讨论】:
-
是的,对不起,我在这里打错了。现在编辑问题中的代码。谢谢。
-
它也适用于
$_POST..我总是直接在$_POST上使用该功能,您的代码似乎没有问题,我认为可能是因为mysql,一旦尝试使用@ 987654326@