我在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');
}
答案 0 :(得分:1)
递归!欢迎来到欢迎来到递归的世界!
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;
}