2

我正在尝试像这样过滤 html 字符

$user = $_POST["user"]; //Get username from <form>
mysql_real_escape_string($user); //Against SQL injection
strip_tags($user); //Filter html characters out

但由于某种原因,这并没有过滤掉 html 字符。不知道为什么,可以mysql_real_escape_string吗?

4

4 回答 4

10

...但是,你的意思是:

$user = $_POST["user"]; // Get username from <form>
$user = mysql_real_escape_string($user); // Against SQL injection
$user = strip_tags($user); // Filter html characters out

?

正如其他答案中所说(指的是strip_tags(),但它是相同的mysql_real_escape_string()),这些函数不会直接更改字符串,而是返回修改后的副本。因此,您必须将返回值分配给相同(或另一个)变量!

于 2011-12-20T18:33:17.480 回答
6
strip_tags($user); //Filter html characters out

应该替换为:

$user = strip_tags($user); //Filter html characters out

strip_tags返回剥离的值

见文档: http: //nl2.php.net/strip_tags

这与mysql_real_escape_string()

$user = mysql_real_escape_string($user); //Against SQL injection
于 2011-12-20T18:32:51.547 回答
2

您使用strip_tags不当:

字符串 strip_tags ( 字符串 $str [, 字符串 $allowable_tags ] )

修改代码以将其分配给返回值应该修复它

$user = strip_tags($user); //Filter html characters out

编辑

只是为了完整起见,感谢 lorenzo-s 指出,您也需要对mysql_real_escape_string

$user = mysql_real_escape_string($user); // Against SQL injection
于 2011-12-20T18:32:55.447 回答
1

正如已经说过的

$user = strip_tags($user);

应该使用,但我也会放

mysql_real_escape_string($user);

在调用 strip_tags(); 之后

于 2011-12-20T18:35:04.363 回答