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 等等 问题是…我经常在处理它们之前操作$_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读取它们之前更改其值 附录: Rich问:“你为什么要改变数组,当然你希望他们是一个输入,而不是你以编程方式插入的东西.” 这是一个非常方便的地方预处理变量,例如为了: > set defaults(if $_GET [‘state’] =”then $_GET [‘state’] =’AL’) 然后我知道当我得到传入的变量,它是安全和有效的.当然,我可以将$_GET数组复制到另一个数组并处理THAT数组,但这只是一个不必要的步骤,因为$_GET已经是一个功能齐全的数组,所以使用已经存在的这些系统数组是有意义的.
您可以手动强制使用
filter_var和
filter_var_array再次读取阵列
$name = filter_var ( $_GET['name'],FILTER_SANITIZE_STRING ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |