首页 > 解决方案 > 检查php中的输入以获取数组值

问题描述

我在 POST 和 GET 中检查 php 中的所有输入,并且在我的应用程序中的任何其他内容之前将它们转换为 html 实体。

问题是,当我有多个同名输入时(例如多个复选框)。我的输入检查器将数组归零。

我想检查 POST 和 GET 数组,并且我想检查它们中所有同名的多个输入(即数组)。

任何人都可以向我建议一段代码吗?

 // Input validation
 $_GET = array_map("input_check",$_GET);
 $_POST = array_map("input_check",$_POST);

 // Check input strings
 function input_check($arr)
 {

     return htmlentities($arr,ENT_QUOTES,'UTF-8'); 

 }

标签: phpinput

解决方案


递归!欢迎来到递归的世界!

array_map()将导致您丢失密钥,因此让该功能处理所有事情。

您将需要检查并考虑数组:

// Input validation
$_GET = input_check($_GET);
$_POST = input_check($_POST);

// Check input strings
function input_check($arr)
{
    if(is_array($arr))
    {
        // Since this value is an array we need to apply this
        // function to each element inside the array and maintain
        // the original keys
        foreach($arr as $k=>$v)
        {
            $arr[$k] = input_check($v);
        }
    }
    elseif(is_string($arr))
    {
        $arr = htmlentities($arr,ENT_QUOTES,'UTF-8');
    }
    return $arr;
}

推荐阅读