迭代所有filter_input变量

时间:2014-07-22 13:41:36

标签: php

使用$_POST,我可以使用

遍历所有POST个变量
foreach($_POST as $key => $value) {
    // do something
}

但是,是否有类似的内容可以迭代每个$key,以便filter_input(INPUT_POST, $key)提供POST的变量?

很明显,我可以使用

foreach(array_keys($_POST) as $key) {
    if(filter_has_var(INPUT_POST, $key) {
        $value = filter_input(INPUT_POST, $key);
        // do something
    }
}

但这并不总是足够的。例如,如果某些$_POST密钥未设置,那么找出最初可用的密钥会很有用,因为它们仍然可以通过filter_input访问。此外,我希望永远不必直接访问任何超级全球。

2 个答案:

答案 0 :(得分:0)

我认为存在设计问题,使用FILTER_INPUT与使用SUPERGLOBALS相同。如果要取消设置任何$ _POST变量,则必须在取消设置之前保留该变量的副本。解析$ _POST没有错:

   // backup your $_POST (or $_POST keys)
   $_post_backup = $_POST;

   // remove 'foo'
   unset($_POST['foo']);

   // itereate
   foreach($_post_backup as $key => $value) {
       $filtered_value = filter_input(INPUT_POST, $key);
       // do something
   }

答案 1 :(得分:0)

我刚刚在Paypal IPN的开发者网站上看到了这个:

[A-z]+12345

我测试了它并且它有效。不知道它是否是安全的,但在大多数情况下它不仅仅是好的。 您仍然需要过滤输入,但现在可以使用filter_input_array

来完成