Sie sind auf Seite 1von 3

Variables predefinidas

Las tablas de valores


Variables de servidor
$_SERVER['COMSPEC'] $HTTP_SERVER_VARS['COMSPEC']
En las tablas que tenemos aquí a
la derecha estamos viendo – C:\\WINDOWS\\COMMAND.COM
clasificadas por tipos– algunas $_SERVER['DOCUMENT_ROOT'] $HTTP_SERVER_VARS['DOCUMENT_ROOT']
variables predefinidas de PHP con
sus valores actuales. c:/apache/htdocs
$_SERVER['HTTP_ACCEPT'] $HTTP_SERVER_VARS['HTTP_ACCEPT']
Esta información (variables y
valores) está siendo extraida de la image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, applica
configuración de tu servidor y de tion/x-shockwave-flash, application/vnd.ms-powerpoint, appli
este documento. cation/vnd.ms-excel, application/msword, application/x-icq,
*/*
Es muy probable que esté
llamando tu atención el hecho de $_SERVER['HTTP_ACCEPT_ENCODING'] $HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING']
que dos nombres de variable gzip, deflate
distintos compartan el mismo
$_SERVER['HTTP_ACCEPT_LANGUAGE'] $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']
valor.
es
Intentaremos ver el por qué de
$_SERVER['HTTP_CONNECTION'] $HTTP_SERVER_VARS['HTTP_CONNECTION']
esa duplicidad.
Keep-Alive
Las variables de las columnas de la
izquierda comienzan todas por $_, $_SERVER['HTTP_HOST'] $HTTP_SERVER_VARS['HTTP_HOST']
mientras que las de la derecha lo localhost
hacen por $HTTP y eso es algo
$_SERVER['HTTP_REFERER'] $HTTP_SERVER_VARS['HTTP_REFERER']
muy importante.
http://localhost/version2006/cursoPHP/php15.php
En el primer caso se alude a las
variables superglobales que $_SERVER['HTTP_USER_AGENT'] $HTTP_SERVER_VARS['HTTP_USER_AGENT']
hemos comentado en la página Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; brip1)
anterior, mientras que en el otro
$_SERVER['PATH'] $HTTP_SERVER_VARS['PATH']
las variables no tienen ese
carácter. C:\\WINDOWS;C:\\WINDOWS\\COMMAND;C:\\ARCHIV~1\\ARCHIV~1\\GTK
\\2.0\\BIN;C:\\APACHE;C:\\APACHE\\PHP4;C:\\APACHE\\PHP5
Razones de la duplicidad $_SERVER['PHPRC'] $HTTP_SERVER_VARS['PHPRC']
c:/Apache/php5/
La duplicidad de variables se
$_SERVER['REMOTE_ADDR'] $HTTP_SERVER_VARS['REMOTE_ADDR']
justifica por lo siguiente: Las
variables superglobales se 127.0.0.1
introdujeron en PHP a partir de la $_SERVER['REMOTE_PORT'] $HTTP_SERVER_VARS['REMOTE_PORT']
versión 4.1.0 y no existían con
anterioridad. 1256
$_SERVER['SCRIPT_FILENAME'] $HTTP_SERVER_VARS['SCRIPT_FILENAME']
Con muy buen criterio, los
desarrolladores PHP optaron por c:/apache/htdocs/version2006/cursophp/php16.php
mantener las variables $_SERVER['SERVER_ADDR'] $HTTP_SERVER_VARS['SERVER_ADDR']
predefinidas de las versiones
anteriores para evitar que los 127.0.0.1
programadores que migraran sus $_SERVER['SERVER_ADMIN'] $HTTP_SERVER_VARS['SERVER_ADMIN']
aplicaciones a estas nuevas
versiones de PHP se vieran pruebas@localhost
obligados a reescribir el código de $_SERVER['SERVER_NAME'] $HTTP_SERVER_VARS['SERVER_NAME']
sus scripts.
localhost
Es por esta razón, por la que se $_SERVER['SERVER_PORT'] $HTTP_SERVER_VARS['SERVER_PORT']
mantienen dos variables distintas
para recoger el mismo valor. 80
$_SERVER['SERVER_SIGNATURE'] $HTTP_SERVER_VARS['SERVER_SIGNATURE']
Observa la sintaxis de los nombres
de las variables y comprobarás la Apache/1.3.33 Server at localhost Port 80
similitud que existe entre ambas.
Los corchetes y sus contenidos son
exactamente iguales en ambos $_SERVER['SERVER_SOFTWARE'] $HTTP_SERVER_VARS['SERVER_SOFTWARE']
casos.
Apache/1.3.33 (Win32) PHP/4.4.0
Tal es el caso de estas dos, que, $_SERVER['WINDIR'] $HTTP_SERVER_VARS['WINDIR']
por cierto, devuelven en número
de la IP a través de la que está C:\\WINDOWS
accediendo el usuario a nuestro $_SERVER['GATEWAY_INTERFACE'] $HTTP_SERVER_VARS['GATEWAY_INTERFACE']
servidor:
CGI/1.1
$_SERVER['REMOTE_ADDR'] $_SERVER['SERVER_PROTOCOL'] $HTTP_SERVER_VARS['SERVER_PROTOCOL']
y
$HTTP_SERVER_VARS
HTTP/1.1
['REMOTE_ADDR'] $_SERVER['REQUEST_METHOD'] $HTTP_SERVER_VARS['REQUEST_METHOD']

cuya similitud resulta evidente. GET


$_SERVER['QUERY_STRING'] $HTTP_SERVER_VARS['QUERY_STRING']
Aunque los valores de ambas
variables van a ser siempre
idénticos, no ocurre lo mismo con $_SERVER['REQUEST_URI'] $HTTP_SERVER_VARS['REQUEST_URI']
su ámbito.
/version2006/cursoPHP/php16.php
Las primeras son de ámbito $_SERVER['SCRIPT_NAME'] $HTTP_SERVER_VARS['SCRIPT_NAME']
superglobal y no necesitan ser
declaradas expresamente con /version2006/cursoPHP/php16.php
globales cuando se trata de utilizar $_SERVER['PATH_TRANSLATED'] $HTTP_SERVER_VARS['PATH_TRANSLATED']
sus valores dentro de cualquier
función. c:/apache/htdocs/version2006/cursophp/php16.php
$_SERVER['PHP_SELF'] $HTTP_SERVER_VARS['PHP_SELF']
En el segundo caso va a ser
imprescindible que sean /version2006/cursoPHP/php16.php
declaradas como globales antes $_SERVER['argv'] $HTTP_SERVER_VARS['argv']
de que sus valores puedan ser
utilizados dentro de una función.
$_SERVER['argc'] $HTTP_SERVER_VARS['argc']

¿Nombres algo raros?

Probablemente te extrañará – Variables de entorno


justificadamente– la longitud y la
estructura un tanto rara de estos
$_ENV['TMP'] $HTTP_ENV_VARS['TMP']
nombres de variables. Cuando
tratemos el tema de los arrays C:\\WINDOWS\\TEMP
asociativos veremos que esa es la
$_ENV['TEMP'] $HTTP_ENV_VARS['TEMP']
sintaxis habitual de ese tipo de
variables. C:\\WINDOWS\\TEMP
$_ENV['PROMPT'] $HTTP_ENV_VARS['PROMPT']
Las nombres de las variables de
cada uno de los tipos, sólo se $p$g
diferencian en lo contenido entre
$_ENV['winbootdir'] $HTTP_ENV_VARS['winbootdir']
los corchetes porque se trata de
distintos elementos del mismo C:\\WINDOWS
array asociativo y –tal como $_ENV['COMSPEC'] $HTTP_ENV_VARS['COMSPEC']
veremos– esa es la sintaxis típica
de los array. C:\\WINDOWS\\COMMAND.COM
$_ENV['PATH'] $HTTP_ENV_VARS['PATH']
¿Para qué sirven? C:\\WINDOWS;C:\\WINDOWS\\COMMAND;C:\\ARCHIV~1\\ARCHIV~1\\GTK
\\2.0\\BIN;C:\\APACHE;C:\\APACHE\\PHP4;C:\\APACHE\\PHP5
No vamos a agobiarte con una $_ENV['LANG'] $HTTP_ENV_VARS['LANG']
enumeración de variables y
contenidos, pero a poco que Default
observes las tablas de valores te $_ENV['TVDUMPFLAGS'] $HTTP_ENV_VARS['TVDUMPFLAGS']
darás cuenta de que es muy
abundante y muy importante la 8
información que recogen. $_ENV['windir'] $HTTP_ENV_VARS['windir']

Si analizas las variables de C:\\WINDOWS


servidor te darás cuenta de que $_ENV['CMDLINE'] $HTTP_ENV_VARS['CMDLINE']
aparece un montón de información
relativa a su configuración: START C:\\Apache\\Apache.exe -w -f \"C:\\Apache\\conf\\httpd
nombre, rutas, nombres de _modulo4.conf\" -d \"C:\\Apache\\\"
páginas, IP del servidor, etcétera.

Con los demás tipos ocurre algo Variables GLOBALES


similar.
$GLOBALS['TMP']

Los distintos tipos C:\\WINDOWS\\TEMP


$GLOBALS['TEMP']
Veamos los diferentes tipos de C:\\WINDOWS\\TEMP
variables predefinidas que existen
en PHP. Por ahora, no te $GLOBALS['PROMPT']
preocupes demasiado sobre la $p$g
forma de utilizarlas. Las incluimos
aquí como una simple $GLOBALS['winbootdir']
enumeración y con una breve C:\\WINDOWS
descripción de su utilidad.
$GLOBALS['COMSPEC']
En temas posteriores haremos C:\\WINDOWS\\COMMAND.COM
referencia a ellas. Por el momento
nos bastará con conocer su $GLOBALS['PATH']
existencia. C:\\WINDOWS;C:\\WINDOWS\\COMMAND;C:\\ARCHIV~1\\ARCHIV~1\\GTK
\\2.0\\BIN;C:\\APACHE;C:\\APACHE\\PHP4;C:\\APACHE\\PHP5
Estamos viendo los valores de las
variables de de entorno (ENV) y $GLOBALS['LANG']
las de servidor (SERVER), pero, Default
además de ellas, existen algunas
otras cuyos nombres y utilidades $GLOBALS['TVDUMPFLAGS']
vamos a comentarte. 8
Variables de sesión $GLOBALS['windir']
C:\\WINDOWS
Las identificaremos por los
nombres $_SESSION o por $GLOBALS['CMDLINE']
$HTTP_SESSION_VARS. START C:\\Apache\\Apache.exe -w -f \"C:\\Apache\\conf\\httpd
Este tipo de variables las _modulo4.conf\" -d \"C:\\Apache\\\"
utilizaremos cuando hagamos $GLOBALS['DOCUMENT_ROOT']
mención al uso de sesiones.
c:/apache/htdocs
La utilización de sesiones –ya $GLOBALS['HTTP_ACCEPT']
abundaremos en ello– es una
forma de recoger, de forma image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, applica
temporal en un documento del tion/x-shockwave-flash, application/vnd.ms-powerpoint, appli
mismo carácter, información cation/vnd.ms-excel, application/msword, application/x-icq,
específica generada a través de los */*
accesos de cada uno de los $GLOBALS['HTTP_ACCEPT_ENCODING']
usuarios.
gzip, deflate
Por ejemplo, cuando accedes al $GLOBALS['HTTP_ACCEPT_LANGUAGE']
Aula Virtual de este curso y
escribes tu clave y contraseña se es
crea un documento temporal en el $GLOBALS['HTTP_CONNECTION']
servidor del CNICE con un número
único y exclusivo para ese acceso – Keep-Alive
identificador de sesión– que te $GLOBALS['HTTP_HOST']
permite acceder a diferentes
apartados de ese espacio sin localhost
necesidad de que reescribas, en $GLOBALS['HTTP_REFERER']
cada una de las páginas, esos
mismos valores. http://localhost/version2006/cursoPHP/php15.php
$GLOBALS['HTTP_USER_AGENT']
El carácter efímero de las sesiones
seguramente lo has comprobado Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; brip1)
más de una vez cuando al $GLOBALS['PHPRC']
actualizar una página te ha
aparecido un mensaje diciendo que
c:/Apache/php5/
la sesion ha caducado. $GLOBALS['REMOTE_ADDR']

Variables del método POST 127.0.0.1


$GLOBALS['REMOTE_PORT']
Las identificaremos por los
nombres $HTTP_POST_VARS o 1256
por $_POST. $GLOBALS['SCRIPT_FILENAME']

Este tipo de variables –que c:/apache/htdocs/version2006/cursophp/php16.php


utilizaremos con frecuencia– $GLOBALS['SERVER_ADDR']
recogen la información que se
envia desde el cliente para ser 127.0.0.1
utilizada por el servidor. $GLOBALS['SERVER_ADMIN']

Recuerda el carácter dinámico de pruebas@localhost


PHP y que ese dinamismo $GLOBALS['SERVER_NAME']
(interacción cliente – servidor)
requiere que el servidor guarde los localhost
datos remitidos por el cliente. $GLOBALS['SERVER_PORT']

Variables del método GET 80


$GLOBALS['SERVER_SIGNATURE']
Las identificaremos por los
nombres $HTTP_GET_VARS o Apache/1.3.33 Server at localhost Port 80
por $_GET

Son muy similares a las anteriores. $GLOBALS['SERVER_SOFTWARE']


La existencia de los dos tipos se
justifica porque también existen Apache/1.3.33 (Win32) PHP/4.4.0
dos tipos de métodos (maneras) $GLOBALS['WINDIR']
de enviar datos desde el cliente
hasta el servidor. C:\\WINDOWS
$GLOBALS['GATEWAY_INTERFACE']
Cuando el método de envío es el
llamado GET los datos se recogen CGI/1.1
en variables de este tipo, y, por el $GLOBALS['SERVER_PROTOCOL']
contrario, si ese método envío
fuera POST se recogerían en HTTP/1.1
aquellas. $GLOBALS['REQUEST_METHOD']

Variables de transferencia de GET


ficheros $GLOBALS['QUERY_STRING']

Las identificaremos por el nombre


$HTTP_FILES_VARS o por $GLOBALS['REQUEST_URI']
$_FILES.
/version2006/cursoPHP/php16.php
Para el caso de transferencia de $GLOBALS['SCRIPT_NAME']
ficheros desde el cliente al servidor
–«subir ficheros»– es necesario un
/version2006/cursoPHP/php16.php
procedimiento distinto de los $GLOBALS['PATH_TRANSLATED']
anteriores.
c:/apache/htdocs/version2006/cursophp/php16.php
Será en este caso cuando se $GLOBALS['PHP_SELF']
utilicen variables de este tipo.
/version2006/cursoPHP/php16.php
El tipo GLOBALS $GLOBALS['argc']

A diferencia de las anteriores, las 0


variables de este tipo disponen de
una sintaxis única –$GLOBALS–
sin que quepa ninguna otra opción.
$GLOBALS['opcion']
Su finalidad es recoger en una I
tabla los nombres de todas la
$GLOBALS['anterior']
variables establecidas como
globales –en cada momento– así php15.php
como sus valores. Si observas la
$GLOBALS['siguiente']
tabla que tienes aquí a la derecha,
quizá te sorprenda leer nombre o php17.php
página. ¿De donde han salido esos $GLOBALS['nombre']
valores?. Bueno... en esta página
utilizamos scripts PHP y esos son nombre
los nombres de unas variables que $GLOBALS['clave']
hemos incluido en esos script.
siguiente
Conocida la existencia de los
diferentes tipos de variables
predefinidas y vista esta tabla –a
modo de ejemplo de su utilidad–
Anterior Indice Siguiente
no será preciso que profundicemos
más en el asunto.

Lo trataremos en el momento en el
que tengamos que hacer uso de
cada una de ellas.

Das könnte Ihnen auch gefallen