Php 带标签不工作
我正在尝试像这样过滤html字符Php 带标签不工作,php,mysql,html,filter,strip-tags,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 $user=$\u POST[“user”]//从中获取用户名 mysql\u real\u escape\u字符串($user)//反对S
$user = $_POST["user"]; //Get username from <form>
mysql_real_escape_string($user); //Against SQL injection
strip_tags($user); //Filter html characters out
$user=$\u POST[“user”]//从中获取用户名
mysql\u real\u escape\u字符串($user)//反对SQL注入
带标签($user)//过滤html字符
但由于某些原因,这并不是过滤html字符。我不知道为什么,可以通过mysql\u real\u escape\u string
strip_tags($user); //Filter html characters out
应替换为以下内容:
$user = strip_tags($user); //Filter html characters out
strip_标记
返回剥离值
见文件:
这与mysql\u real\u escape\u string()相同。
您正在不正确地使用:
string strip_标记(string$str[,string$allowed_标记])
修改代码以将其分配给返回值应该可以修复它
$user = strip_tags($user); //Filter html characters out
编辑
为了完整起见,感谢lorenzo-s指出这一点,您还需要对mysql\u real\u escape\u字符串执行同样的操作
$user = mysql_real_escape_string($user); //Against SQL injection
$user = mysql_real_escape_string($user); // Against SQL injection
……但是,你的意思是:
$user = $_POST["user"]; // Get username from <form>
$user = mysql_real_escape_string($user); // Against SQL injection
$user = strip_tags($user); // Filter html characters out
$user=$\u POST[“user”];//从中获取用户名
$user=mysql\u real\u escape\u字符串($user);//反对SQL注入
$user=strip_标签($user);//过滤html字符
?
正如在其他答案中所述(参考strip\u tags()
,但对于mysql\u real\u escape\u string()
),这些函数不直接更改字符串,而是返回修改后的副本。因此,您必须将返回值分配给同一(或另一)变量 如前所述
$user = strip_tags($user);
应该使用,但我也会
mysql_real_escape_string($user);
在调用strip_tags()之后 哪种HTML字符不会被过滤掉?不会过滤掉所有的HTML,只是一些标签。其次,盲目应用某些esacpe或strip函数并不会增加太多安全性,您需要知道自己具体在做什么。这是输入验证、清理和构建数据库查询的难点。这也是错误的顺序(即使strip_标记不太可能撤消转义)。如果这是问题所在,他会在mysql_real_escape_string()上犯同样的错误
也是。对于strip\u标签的顺序应该一点也不重要
/mysql\u real\u escape\u string
。就个人喜好而言,我同意。听起来不错,但标准方式是strip_标签(html_实体_解码($user))