strip_tags不起作用

时间:2011-12-20 18:30:11

标签: php mysql html filter strip-tags

我正在尝试像这样过滤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 个答案:

答案 0 :(得分: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()也是如此),这些函数不会直接改变字符串,而是返回修改后的副本 。因此,您必须将返回值分配给相同(或另一个)变量!

答案 1 :(得分:5)

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

应该替换为:

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

strip_tags返回剥离值

请参阅doc:http://nl2.php.net/strip_tags

这与mysql_real_escape_string()

相同
$user = mysql_real_escape_string($user); //Against SQL injection

答案 2 :(得分:2)

您未正确使用strip_tags

  

string strip_tags(string $ str [,string $ 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

答案 3 :(得分:1)

如前所述

$user = strip_tags($user);
应该使用

,但我也会把

mysql_real_escape_string($user);

调用strip_tags();

之后