2009-08-21 116 views
10

我在php.ini中发现了以下代码。那是什么意思?“EGPCS”在PHP中的含义是什么?

和 “PHP注册” - 那是什么?

 
; 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" 
+1

你真的看您发布的文档? – 2009-08-21 16:12:45

+0

@Sean Bright:是的,但我不知道PHP寄存器的用途是什么? 你有没有在我的问题的底部看到? – coderex 2009-08-21 16:14:13

+0

是的。答案就在您发布的文档中。 – 2009-08-21 16:20:03

回答

24

有关指令手册可以帮助你多一点:variables_order(引用):

设定EGPCS 的顺序(环境,GET,POST,Cookie和 服务器)变量解析。例如,如果 的variables_order设置为 “SP”,那么 PHP将创建超全局 $_SERVER$_POST,但不能创建 $_ENV$_GET$_COOKIE。设置为 “”表示不会设置超全球植物。

还要注意(再次引用):

$_REQUEST内容和顺序 也受该指令。

我想这个选项是更加重要的前一阵子,当register_globals的仍然是一些使用,在同一页面状态(引用):

如果弃用register_globals 指令是上(如删除PHP 6.0.0 )的,则是variables_order还配置ENV,GET,POST ,COOKIE和服务器变量 填充在全球范围内的顺序。因此,对于 例如,如果是variables_order设置为 “EGPCS”,启用了register_globals, 两者$_GET['action']$_POST['action']设置,然后$action 将包含 $_POST['action']价值为P来摹后 我们的例子中指导价值。

我看不出有什么我可以添加;这有帮助吗?
或者这是什么导致你的问题?

+0

@帕斯卡尔马丁:对不起。 :(为什么我们需要为这些变量设置一个顺序,我不明白吗? – coderex 2009-08-21 16:22:15

+2

如果你有一个变量,名字与在$ _GET和$ _COOKIE中传递的方式相同,当合并$ _GET,$ _POST,$ _COOKIE, ...变成$ _REQUEST,PHP必须知道哪一个必须首先被使用......并且哪一个会覆盖第一个。这在今天不太常用(至少,如果我们不使用$ _REQUEST),但是当使用register_globals时,依赖这个命令在我们的变量中设置正确的值并不少见;;您可以在$ _GET中有一个'action'并且在$ _COOKIe中有另一个'action'但你可以在$ _REQUEST中只有一个:它将是哪一个?;-) – 2009-08-21 16:27:56

+0

是的,我明白了!谢啦 !! :-) 这真的是我想要的答案:-)。 在你的下一篇文章:) – coderex 2009-08-21 16:30:35

1

它控制,其中全局变量$_GET$_POST等等都由PHP定义的顺序。这些字母仅代表类别,例如G代表$_GET。我严肃地怀疑你想捣乱那个设置。上述

+0

控制顺序意味着在register_global设置为On的情况下给予碰撞变量名称的优先级。例如,如果$ _GET ['name']和$ _POST ['name']一起存在,则此命令对于将值设置为$ name很重要。 – 2015-01-06 13:50:54

5

接受的答案是好的。但是这里要注意的另一个要点是,如果没有设置这些标志,那么脚本运行时该变量将为空,即如果variables_order设置为“GPCS”,则$ _ENV变量将始终为空数组。发现困难的方式。