我正在尝试像这样过滤 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
吗?
我正在尝试像这样过滤 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
吗?
...但是,你的意思是:
$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()
),这些函数不会直接更改字符串,而是返回修改后的副本。因此,您必须将返回值分配给相同(或另一个)变量!
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
您使用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
正如已经说过的
$user = strip_tags($user);
应该使用,但我也会放
mysql_real_escape_string($user);
在调用 strip_tags(); 之后