1

我想从多个字段中删除 HTML 代码。所以我用:

extract($_POST)

然后插入表中。

我不会像这样剥离每个字段:


$user  = strip_tags($user);
$email = strip_tags($email);
.....

有什么解决方案可以剥离我的 extract($_POST) 数组?

mysql_real_escape_string() 也一样

编辑 1 我不会使用

foreach($_POST as $key => $value){
  $_POST[$key] = mysql_real_escape_string(strip_tags($value));
}

我想使用短变量:

$姓名,$电子邮件

不是:

$_POST['name'] , $_POST['email']

并且不推荐使用 extract() 。

编辑2解决方案是:

foreach($_POST as $key => $value){
  $$key = mysql_real_escape_string(strip_tags($value));
}
4

3 回答 3

3

您可以使用array_map()为给定数组的每个元素指定回调函数。

$_POST = array_map("strip_tags", $_POST);

编辑:也许你应该指定为什么你试图逃避用户输入。例如,PHP 具有特定的帮助来转义将添加到数据库中的值以及将显示在页面上的值。因为前者可能导致 SQL 注入,而后者可能导致 XSS 漏洞。

于 2011-01-29T14:08:34.057 回答
2

我猜你想要这段代码

foreach($_POST as $key => $value){
   $$key = strip_tags($value);
}

//The insertion here
insertion();   

老的

foreach($_POST as $key => $value){
   $_POST[$key] = strip_tags($value);
   }

extract($_POST);

//The insertion here
insertion();

之后,您拥有所有帖子字段 strip_tagged

于 2011-01-29T14:31:20.857 回答
1

使用 PHP 提供的过滤功能,特别是在这种情况下您会感兴趣filter_input_array

$filtered = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRIPPED);
于 2011-01-29T14:15:59.853 回答