[Ir al menú de PHP]
Variables predefinidas (II)

Variable predefinidas cuando register_globals=off

Cuando te comentaba la forma en la que había configurado el php te decía que había hecho una modificación en el fichero php.ini y que había puesto register_globals= ON y con esa configuración fué con la que desarrollé la página anterior.

Pero... (¿por qué habrá siempre un ... pero? ;-)) si utilizas un servidor gratuito en el que quizá no tengas privilegios de acceso a la configuración y por cualquier circunstancia está configurado con la opción register_globals=OFF (eso siempre podrás comprobarlo con aquel famoso script que te comenté -info.php- te encontrarás en la desagradable situación de que no podrás visualizar los valores de esas variables predefinidas.

He leido por ahí (ya sabes que cuando el río suena...) que por razones de seguridad se está tendiendo a modificar a off ese parámetro y también que... a partir de la versión 4.2.0 de PHP, la configuración por defecto de register_globals es off.

Por si te encuentras en esa situación (no me dirás que no intento cuidarte...) y no puedes o no quieres modificar esa configuración trataré de contarte como visualizar esas variables. Verás que está chupado.

Basta con que modifiques la llamada a la variable e introduzcas el nombre de la variable en el campo de nombre de un array asociativo ( ¡¡ufff...!! me temo que aún no has leido la historia de los arrays ... y esto me pasa por andar añadiendo remiendos a esta página... un millón de sorrys...) o dicho de una manera mucho más simple, basta que hagas un cambio con este:

Donde antes -en la página anterior por más señas- ponías el nombre de la variable ahora pones $HTTP_SERVER_VARS['nombre de la variable'] y ...listo el bote.

Aquí tienes un ejemplo. Donde antes ponías GATEWAY_INTERFACE ahora solo tienes que poner

$HTTP_SERVER_VARS['GATEWAY_INTERFACE']

y ... ya tá, para todas la variables igual... tal como puedes ver aquí a la derecha donde te he puesto todos los ejemplos de la página anterior... pero adaptados a la nueva sintaxis.

A lo mejor te ocurre lo que a mí -¡¡que manía tengo con que a todo el mundo tengan que ocurrirle mis desgracias...!!- y empiezas a pensar que menudo peñazo... que una configuración para cuando register_globals está en on, otra para cuando está en off, otra para el caso de que la abuela fume.. etc. etc. pero... no te asustes que nunca pasa nada y salvo lo feo todo lo demás tiene arreglo...

Si utilizas siempre esta forma de invocar las variables predefinidas te servirá tanto para el on como para el off del famoso register_globals de la configuración del php.ini.

Así que te aconsejo que te olvides de lo que te comenté en la página anterior (bueno... mejor considéralo un aporte a tu acerbo histórico-cultural) y quédate con esta forma que te comento aquí que vale para toda situación, o, mejor dicho... para casi todas las situaciones.

Versiones PHP 4.2.0 o superior

Hace un momento te dije que para casi todas las situaciones y es que las ciencias adelantan que es una barbaridad y PHP también crece, también se mejora y... esperemos que no se muera y fruto de esa evolución, a partir de la versión 4.2.0 han incorporado algunas variables nuevas, entre ellas

$_SERVER que tiene la misma funcionalidad que $HTTP_SERVER_VARS pero con un valor añadido.

El valor añadido de $_SERVER es que tiene la característica de ser una variable superglobal.

¿Te estás preguntando que es eso de superglobal?. Si es así, la respuesta es fácil. Cuando hablábamos del ámbito de las variables (¿se te ha olvidado? aquí tienes un enlace pero no te acostumbres ;-) decíamos que para poder utilizar una variable dentro de una función era necesario definirla en esa función como global... pues mira por donde... $_SERVER se define automáticamente como global para cualquier función y de esa utilidad es de donde toma el nombre de superglobal.

Resumiendo... que si tu servidor trabaja con PHP 4.2.0 o versión superior puedes utilizar indistintamente $HTTP_SERVER_VARS ó $_SERVER y tendrás los mismos resultados y además esta última te da de regalo lo de superglobal.

Pero te aviso... con versiones anteriores a PHP 4.2.0 no funciona, es una opción futurista

Si no te lo crees.. haz como Santo Tomás pincha aquí y verás como aparecen en blanco los valores de los resultados...


 
 


Alguna variables predefinidas...

PHP proporciona una gran cantidad de variables predefinidas a cualquier script que se ejecute. De todas formas, muchas de esas variables no pueden estar completamente documentadas ya que dependen de sobre qué servidor se esté ejecutando, la versión y configuración de dicho servidor, y otros factores.

Algunas de estas variables -operativas cuando REGISTER_GLOBALS=OFF son estas:

$HTTP_SERVER_VARS['GATEWAY_INTERFACE']
Indica que revisión de la especificación CGI está usando el servidor
echo $HTTP_SERVER_VARS['GATEWAY_INTERFACE'] Resultado CGI/1.1
$HTTP_SERVER_VARS['SERVER_NAME']
Indica el nombre del servidor en el que se está ejecutando el script de PHP
echo $HTTP_SERVER_VARS['SERVER_NAME'] Resultado www.rinconastur.net
$HTTP_SERVER_VARS['SERVER_SOFTWARE']
Escribe una cadena de identificación del servidor, que aparece en las cabeceras al responderse a las peticiones
echo $HTTP_SERVER_VARS['SERVER_SOFTWARE'] Resultado Apache/1.3.39 (Unix) PHP/5.2.4 mod_log_bytes/1.2 mod_bwlimited/1.4 mod_auth_passthrough/1.8 FrontPage/5.0.2.2635 mod_ssl/2.8.30 OpenSSL/0.9.7a
$HTTP_SERVER_VARS['SERVER_PROTOCOL']
Escribe el nombre y revisión del protocolo a través del que se solicitó la página
echo $HTTP_SERVER_VARS['SERVER_PROTOCOL'] Resultado HTTP/1.1
$HTTP_SERVER_VARS['REQUEST_METHOD']
Escribe el método de petición se usó para acceder a la página
echo $HTTP_SERVER_VARS['REQUEST_METHOD'] Resultado GET
$HTTP_SERVER_VARS['QUERY_STRING']
Escribe la cadena de petición (si la hubo) con la que se accedió a la página
echo $HTTP_SERVER_VARS['QUERY_STRING'] Resultado  
$HTTP_SERVER_VARS['DOCUMENT_ROOT']
Indica directorio raíz del documento bajo el que se ejecuta el script, tal y como está definido en el fichero de configuración del servidor
echo $HTTP_SERVER_VARS['DOCUMENT_ROOT'] Resultado  
/home/rinconas/public_html
$HTTP_SERVER_VARS['HTTP_ACCEPT']
Indica los tipos MIME que el cliente puede recibir.
echo $HTTP_SERVER_VARS['HTTP_ACCEPT'] Resultado Accept: application/xhtml+xml,text/html;q=0.9,text/plain; 
$HTTP_SERVER_VARS['HTTP_ACCEPT_CHARSET']
Indica los contenidos de la cabecera Accept-Charset de la petición actual, si hay alguna.
echo $HTTP_SERVER_VARS['HTTP_ACCEPT_CHARSET'] Resultado ISO-8859-1,utf-8;q=0.7,*;q=0.7 
HTTP_ENCODING
Indica los contenidos de la cabecera Accept-Encoding de la petición actual, si la hay
echo $HTTP_ENCODING Resultado  
$HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']
Indica los contenidos de la cabecera Accept-Language de la petición actual, si hay alguna.
echo $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'] Resultado en-us,en;q=0.5 
$HTTP_SERVER_VARS['HTTP_CONNECTION']
Determina el tipo de conexión HTTP que está en uso. Generalmente Keep-Alive es lo normal. Esto indica que el servidor no debe cerrar la conexión con el cliente
echo $HTTP_SERVER_VARS['HTTP_CONNECTION'] Resultado close 
$HTTP_SERVER_VARS['HTTP_HOST']
Indica los contenidos de la cabecera Host de la petición actual, si hay alguna
echo $HTTP_SERVER_VARS['HTTP_HOST'] Resultado www.rinconastur.net 
$HTTP_SERVER_VARS['HTTP_REFERER']
La dirección de la página (si la hay) desde la que el navegador saltó a la página actual.
echo $HTTP_SERVER_VARS['HTTP_REFERER'] Resultado  
 
$HTTP_SERVER_VARS['HTTP_USER_AGENT']
Indica el navegador que se está utilizando para ver la página actual
echo $HTTP_SERVER_VARS['HTTP_USER_AGENT'] Resultado CCBot/1.0 (+http://www.commoncrawl.org/bot.html) 
$HTTP_SERVER_VARS['REMOTE_ADDR']
Indica la dirección IP desde la que el usuario está viendo la página actual
echo $HTTP_SERVER_VARS['REMOTE_ADDR'] Resultado 38.103.63.18 
$HTTP_SERVER_VARS['REMOTE_PORT']
Indica el puerto que se está utilizando en la máquina del usuario para comunicarse con el servidor web
echo $HTTP_SERVER_VARS['REMOTE_PORT'] Resultado 35400 
gethostbyaddr("$REMOTE_ADDR")
Indica el puerto que se está utilizando en la máquina del usuario para comunicarse con el servidor web
echo $gethostbyaddr("$REMOTE_ADDR") Resultado
Warning: gethostbyaddr() [function.gethostbyaddr]: Address is not a valid IPv4 or IPv6 address in /home/rinconas/public_html/php/php12a.php on line 126
 
$HTTP_SERVER_VARS['SCRIPT_FILENAME']
Indica la vía de acceso absoluta del script que se está ejecutando
echo $HTTP_SERVER_VARS['SCRIPT_FILENAME'] Resultado /home/rinconas/public_html/php/php12a.php 
$HTTP_SERVER_VARS['SERVER_ADMIN']
El valor que se haya dado a la directiva SERVER_ADMIN (en Apache) en el fichero de configuración del servidor web.
echo $HTTP_SERVER_VARS['SERVER_ADMIN'] Resultado webmaster@rinconastur.net 
$HTTP_SERVER_VARS['SERVER_PORT']
El puerto del equipo servidor que está usando el servidor web para la comunicación.
echo $HTTP_SERVER_VARS['SERVER_PORT'] Resultado 80 
$HTTP_SERVER_VARS['SERVER_SIGNATURE']
Una cadena que contiene la versión del servidor y el nombre del servidor virtual que es añadida a las páginas generadas por el servidor, si está característica está activa
echo $HTTP_SERVER_VARS['SERVER_SIGNATURE'] Resultado
Apache/1.3.39 Server at www.rinconastur.net Port 80
 
$HTTP_SERVER_VARS['PATH_TRANSLATED']
Vía de acceso basada en el sistema de ficheros- (no el directorio raíz del documento-) del script en cuestión, después de que el servidor haya hecho la conversión virtual-a-real.
echo $HTTP_SERVER_VARS['PATH_TRANSLATED'] Resultado  
/home/rinconas/public_html/php/php12a.php
$HTTP_SERVER_VARS['SCRIPT_NAME']
Vía de acceso basada en el sistema de ficheros- (no el directorio raíz del documento-) del script en cuestión, después de que el servidor haya hecho la conversión virtual-a-real.
echo $HTTP_SERVER_VARS['SCRIPT_NAME'] Resultado   
$HTTP_SERVER_VARS['REQUEST_URI']
La URI que se dió para acceder a esta página;
echo $HTTP_SERVER_VARS['REQUEST_URI'] Resultado /php/php12a.php 
$HTTP_SERVER_VARS['PHP_SELF']
El nombre del fichero que contiene el script que se esta ejecutando, relativo al directorio raíz de los documentos.
echo $HTTP_SERVER_VARS['PHP_SELF'] Resultado /php/php12a.php 
HTTP_COOKIE_VARS
Un array asociativo de variables pasadas al script actual mediante cookies HTTP
echo $HTTP_COOKIE_VARS Resultado Array 
HTTP_GET_VARS
Un array asociativo de variables pasadas al script actual mediante el método HTTP GET.
echo $HTTP_GET_VARS Resultado Array 
HTTP_POST_VARS
Un array asociativo de variables pasadas al script actual mediante el método HTTP POST
echo $HTTP_POST_VARS Resultado Array 

info.php

Sugerir a un/a amig@ Envíame tus comentarios
Anterior
Indice
Siguiente