加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:35:32 所属栏目:PHP教程 来源:网络整理
导读:在 PHP 5.2中有一个很好的安全功能,被称为“input_filter”,所以不是说: $name = $_GET['name']; 你现在可以说: $name = filter_input (INPUT_GET,'name',FILTER_SANITIZE_STRING); 并自动清除您的字符串,还有: FILTER_SANITIZE_ENCODED FILTER_SANITIZE_
在 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_var和 filter_var_array再次读取阵列
$name = filter_var ( $_GET['name'],FILTER_SANITIZE_STRING );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读