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.