2009-08-21 18 views
10

He encontrado el siguiente código en php.ini. ¿Qué significa eso?¿Qué significa "EGPCS" en PHP?

Y "PHP registra" - ¿qué es eso?

 
; 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

¿De verdad leíste la documentación que publicaste? –

+0

@Sean Bright: sí, pero no sé para qué sirven los registros de PHP. ¿Viste eso al final de mi pregunta? – coderex

+0

Sí. Y la respuesta está ahí en la documentación que publicó. –

Respuesta

24

El manual sobre la directiva que podría ayudar un poco más: variables_order (citando):

Establece el orden del EGPCS (Entorno, GET, POST, Cookie, y Server) análisis de variables Por ejemplo, si variables_order está ajustado en "SP" entonces PHP creará la superglobals $_SERVER y $_POST, pero no crear $_ENV, $_GET, y $_COOKIE. Establecer en "" significa que no se establecerán superglobales.

También tenga en cuenta (citando de nuevo):

El contenido y el orden de $_REQUEST se también afectados por esta directiva.

supongo que esta opción era más importante hace un tiempo, cuando register_globals era todavía algo que se usa, ya que los mismos estados de página (citando):

Si el desuso register_globals directiva está activada (eliminado como de PHP 6.0.0), entonces variables_order también configura el orden ENV, GET, variables POST, COOKIE y SERVER son poblado en alcance global. Así que para ejemplo, si variables_order se establece en "EGPCS", register_globals está activado, y se fijan tanto $_GET['action'] y $_POST['action'], a continuación, $action contendrá el valor de $_POST['action'] como P se produce después de G en nuestro ejemplo de valor de directiva.

No veo qué podría agregar; ¿esto ayudó?
¿O es esto algo que te causa un problema?

+0

@Pascal MARTIN: lo siento. :(, ¿por qué tenemos que establecer un orden para estas variables. No entiendo? – coderex

+2

Si tiene una variable nombrada de la misma manera que se pasa tanto en $ _GET como en $ _COOKIE, al fusionar $ _GET, $ _POST, $ _COOKIE, ... en $ _REQUEST, PHP tiene que saber cuál de esos debe usarse primero ... y cuál de ellos prevalecerá sobre el primero. Esto no se usa mucho hoy (al menos, si no usamos) $ _REQUEST), pero cuando se utilizó register_globals, no era raro depender de este orden para tener los valores correctos establecidos en nuestras variables. ;; puede tener una 'acción' en $ _GET y otra 'acción' en $ _COOKIe; pero solo puede tener uno en $ _REQUEST: ¿cuál será? ;-) –

+0

¡Sí, lo tengo! Gracias hombre !! :-) Esta fue la respuesta que realmente quiero :-). c u en la próxima publicación :) – coderex

1

Controla el orden en que las variables globales $_GET, $_POST, etc. están definidas por PHP. Las letras solo representan categorías, por ejemplo, G para $_GET. Dudo seriamente que quieras meterse con ese escenario.

+0

Controlar el orden significa dar las prioridades a los nombres de las variables colisionantes en caso de que register_global esté establecido en On. Por ejemplo, si $ _GET ['name'] y $ _POST ['name'] existen juntos, este orden es importante para establecer el valor en $ name. –

5

La respuesta aceptada anteriormente es buena. Pero otro punto importante a tener en cuenta aquí es que si alguno de estos indicadores no está establecido, esa variable estará vacía cuando se ejecute el script, es decir, si variables_order está establecido en "GPCS", la variable $ _ENV siempre será una matriz vacía. Encontré esto por el camino difícil.