慎用$_REQUEST以及如何定义$_REQUEST的处理优先级

好吧,我承认我严重的错了。
一直以为PHP的REQUEST处理优先级为PGSC。

[shell]
[root@yang ~]# php -i |grep variables_order
variables_order => GPCS => GPCS
[/shell]

$_REQUEST包括所有$_GET、$_POST和$_COOKIE几个数组中的数据元素。但是你需要注意的是,如果这几个数组中的元素的关键字是一样的,PHP将按照php.ini配置文件的变量赋值顺序依次对$_REQUEST数组中该关键字指定的元素进行重写。在php.ini中,G代表$_GET,P代表$_POST,C代表$_COOKIE,E代表$_ENV,S代表$_SERVER。按照配置文件的顺序,后面出现的数据会覆盖前面写入的数据。默认的数据写入顺序是EGPCS,因此,在关键字相同的情况下,POST包含的数据会覆盖GET中的数据。

php.in设置段:
; This directive describes the order in which PHP registers GET, POST, Cookie,
; Environment and Built-in variables (G, P, C, E & S respectively, often
; referred to as EGPCS or GPC). Registration is done from left to right, newer
; values override older values.
variables_order = "EGPCS"

因此,$_REQUEST会降低变量赋值的效率以及产生同关键字覆盖问题。

发表评论