PHP的new input_filter不读$_GET或$_POST数组

前端之家收集整理的这篇文章主要介绍了PHP的new input_filter不读$_GET或$_POST数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP 5.2中有一个很好的安全功能,被称为“input_filter”,所以不是说:
$name = $_GET['name'];

你现在可以说:

$name = filter_input (INPUT_GET,'name',FILTER_SANITIZE_STRING);

自动清除您的字符串,还有:

> FILTER_SANITIZE_ENCODED
> FILTER_SANITIZE_NUMBER_INT
> FILTER_SANITIZE_EMAIL
> FILTER_SANITIZE_URL

等等
所以这是使用非常方便的安全功能,我想完全切换到它.

问题是…我经常在处理它们之前操作$_GET和$_POST数组,如下所示:

$_GET [‘name’] ='(默认名称)’;

但是似乎filter_input无法访问$_GET中的更改,因为它读取类型为int(?)的“INPUT_GET”.如果我可以得到filter_input来读取$_GET,但是会很好:

$name = filter_input ( $_GET,FILTER_SANITIZE_STRING );

给我错误

Warning: filter_input() expects parameter 1 to be long,array given.

任何人都可以想到一种可以的方式:

>操纵INPUT_GET的源(不管它是什么),以便我可以在filter_input读取它们之前更改其值
> get filter_input读取$_GET

附录:

Rich问:“你为什么要改变数组,当然你希望他们是一个输入,而不是你以编程方式插入的东西.”

这是一个非常方便的地方预处理变量,例如为了:

> set defaults(if $_GET [‘state’] =”then $_GET [‘state’] =’AL’)
>做手工处理(删除所有空格等)
>安全性(其中一些将由filter_input完成)

然后我知道当我得到传入的变量,它是安全和有效的.当然,我可以将$_GET数组复制到另一个数组并处理THAT数组,但这只是一个不必要的步骤,因为$_GET已经是一个功能齐全的数组,所以使用已经存在的这些系统数组是有意义的.

您可以手动强制使用 filter_varfilter_var_array再次读取阵列
$name = filter_var ( $_GET['name'],FILTER_SANITIZE_STRING );
原文链接:https://www.f2er.com/php/132475.html

猜你在找的PHP相关文章