我正在尝试像这样过滤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
吗?
答案 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();
之后