En este post de hoy, voy a dejar colgado aquí una pequeña lista de variables predefinidas en PHP que nos pueden ser de gran ayuda.
PHP proporciona una cantidad (considerable) de variables predefinidas para todos los scripts. Estas variables representan un poco de todo, desde variables externas hasta variables de entorno incorporadas, desde los últimos mensajes de error hasta los últimos encabezados recuperados.
Algunas variables predefinidas de PHP
Antes de una explicación un poco más general, veamos un listado de las mismas;
- Superglobals: Son variables internas que están disponibles siempre en todos los ámbitos.
- $GLOBALS: Hace referencia a todas las variables disponibles en el ámbito global.
- $_SERVER: Proporciona información del entorno del servidor y de ejecución.
- $_GET: Variables HTTP y GET.
- $_POST: Variables HTTP y POST.
- $_FILES: Variables de carga de archivos HTTP.
- $_RESQUET: Variables HTTP y Resquet.
- $_SESSION: Variables de sesión.
- $_ENV: Variables de entorno.
- $_COOKIE: Cookies y HTTP.
- $php_errormsg: El mensaje de error anterior.
- $HTTP_RAW_POST_DATA: Datos POST sin tratar.
- $http_response_header: Encabezados de respuesta HTTP.
- $argc: El número de argumentos pasados a un script.
- $argv: Array de argumentos pasados a un script.
Superglobals: son variables internas que están disponibles siempre en todos los ámbitos. Algunas variables predefinidas en PHP son «superglobales», lo que significa que están disponibles en todos los ámbitos a lo largo del script. No es necesario emplear global $variables para acceder a ellas dentro de las funciones o métodos.
Las variables superglobals son:
- $GLOBALS
- $_SERVER
- $_GET
- $_POST
- $_FILES
- $_COOKIE
- $_SESSION
- $_REQUEST
- $_ENV
$GLOBALS: Hace referncia a todas las variables disponibles en el ámbito global. Es un array asociativo que contiene las referencias a todas las variables que están definidas en el ámbito global del script. Los nombres de las variables son las claves del array.
$_SERVER: Da información del entorno del servidor y de ejecución. Es un array que contiene información como puede ser, cabeceras, rutas y localizaciones del código. Las entradas en este array son creadads por el servidor web. No existe garantía de que cada servidor web proporcione toda estas entradas, ya que existen servidores que pueden omitir algunas o proporcionar otras.
Dentro de $_SERVER se pueden encontrar los siguientes elementos:
‘PHP_SELF’: El nombre del archivo de script ejecutándose actualmente, relativo al directorio raíz de documentos del servidor.
‘__FILE__’: Esta constante contiene la ruta completa del fichero actual, incluyendo el nombre del archivo.
‘argv’: Es un array de los argumentos enviados al script. Cuando se ejecuta el script en lína de comando se obtiene acceso a los parámetros de linea de comando con un estilo parecido a como sería en C. Cuando se ejecuta el script mediante el método GET, contendrá la cadena de la consulta.
‘argc’: Contiene el número de parámetros de línea de comando enviados al script.
‘GATEWAY_INTERFACE’: Numero de revisión de la especificación CGI que está empleando el servidor (como por ejemplo CGI/1.1).
‘SERVER_ADDR’: La dirección IP del servidor donde se está ejecutnado actualmente el script.
‘SERVER_NAME’: El nombre del host del servidor donde se está ejecutando actualmente el script. Si el script se ejecuta en un host virtual se obtendrá el valor del nombre definido para dicho host virtual.
‘SERVER_SOFTWARE’: Cadena de identificación del servidor dada en las cabeceras de respuesta a las peticiones.
‘SERVER_PROTOCOL’: Nombre y número de revisión del protocolo de información a través del cual la página es solicitada.
‘REQUES_METHOD’: Método de petición empleado para acceder a la página, es decir GET, HEAD, POST y PUT.
‘REQUEST_TIME’: Fecha Unix de inicio de la petición.
‘REQUEST_TIME_FLOAT’: El timestamp del inicio de la solicitud, con preción en microsegundos.
‘QUERY_STRING’: Si existe, la cadena de la consulta de la petición de la página.
‘DOCUMENT_ROOT’: El directorio raíz de documentos del servidor en el cual se está ejecutnado el script actual, según está definida ene l archivo de configuración del servidor.
‘HTTP_ACCEPT’: Contenido de la cabecera Accept: de la petición actual, si existe.
‘HTTP_ACCEPT_CHARSET’: Contenido de la cabecera Accept-Charset: de la petición actual, si existe.
‘HTTP_ACCEPT_ENCODING’: Contenido de la cabecera Accept-Encoding: de la petición actual, si existe.
‘HTTP_ACCEPT_LANGUAGE’: Contenido de la cabecera Accept-Language: de la petición actual, si existe.
‘HTTP_CONNECTION’: Contenido de la cabecera Connection: de la petición actual, si existe.
‘HTTP_HOST’: Contenido de la cabecera Host, de la petición actual, si existe.
‘HTTP_REFERER’: Dirección de la página (si la hay) que emplea el agente de usuario para la página actual. Es definido por el agente de usuario. No todos los agentes de usuario lo definen y algunos permiten modifica HTTP_REFERER como parte de su funcionalidad. En resumen, es un valor del que no se puede confiar realmente.
‘HTTP_USER_AGENT’: Contenido de la cabecera USER-AGENT. Consiste en una cadena que indica el agente de usuario empelado para acceder a la página. Entre otras opciones se puede emplear dicho valor con get_browser() para personalizar el resultado de la salida de la página en función de las capacidades del agente de usuario empleado.
‘HTTPS’: Ofrece un valor no vacío si el script es pedido mediante el protocolo HTTPS.
‘REMOTE_ADDR’: La dirección IP desde la cual está viendo la página actual el usuario.
‘REMOTE_HOST’: El nombre del host desde el cual está viendo la página el suaurio. La obtención inversa del dns está basada en REMOTE_ADDR del usuario.
‘REMOTE_PORT’: El puerto empleado por la máquina del usuario para comunicarse con el servidor web.
‘REMOTE_USER’: El usuario autenticado.
‘REDIRECT_REMOTE_USER’: El usuario autenticado si la peticiónes redirigida internamente.
‘SCRIPT_FILENAME’: La ruta del script ejecutándose actualmente en forma absoluta.
‘SERVER_ADMIN’: El valor dado a la directiva SERVER_ADMIN (de Apache) en el archivo de configuración del servidor web. Si el script se está ejecutando en un host virtual, el valor dado será el definido para dicho host virtual.
‘SERVER_PORT’: El puerto de la máquina del servidor usado por el servidor web para la comunicación. Por defecto será el puerto 80.
‘SERVER_SIGNATURE’: Cadena que contiene la versión del servidor y el nombre del host virtual que son añadidas en las páginas generadas por el servidor, si esta habilitada esta funcionalidad.
‘PATH_TRANSLATED’: Ruta de acceso basada en el sistema (no en el directorio raíz de documentos del servidor) del script actual, después de cualquier mapeo virtual a realizar por el servidor.
‘SCRIPT_NAME’: Contiene la ruta del script actual. Esto es de utilidad para las páginas que necesiten apuntarse a si mismas. La constante __FILE__ contiene la ruta absoluta y el nombre del archivo actual incluído.
‘REQUEST_URL’: La URL que se empleó para acceder a la página. Por ejemplo /index.html.
‘PHP_AUTH_DIGEST’: Cuanso se hace autenticación Digest HTTP, esta variable se establece para el ancabezado ‘Authorization’ enviado por el cliente.
‘PHP_AUTH_USER’: Cuando se hace autenticación HTTP, esta variable se establece para el nombre de usuario provisto por el usuario.
‘PHP_AUTH_PW’: Cuando se hace autenticación HTTP, esta variable se establece para la clave provista por el usuario.
‘AUTH_TYPE’: Cuando se hace autenticado HTTP, esta variable establece el tipo de autenticación.
‘PATH_INFO’: Contiene cualquier información sobre la ruta proporcionada por el cliente a continuación del nombre del fichero del script actual pero antecediendo a la cadena de la petición, si existe.
‘ORIG_PATH_INFO’: Versión original de PATH_INFO antes de ser procesado por PHP.
$_GET: Es un array asociativo de variables que se pasan al script actual vía parámetros URL. Esta es una variable ‘superglobal’ o una variable automatic global. Significa simplemente que es una variabel que está disponible en cualquier parte del script. No hace falta hacer global $variable para acceder a la misma desde funciones o métodos.
$_POST: Es un array asociativo de variables pasadas al script que estemos utilizando a través del método HTTP POST. Esta es una variable ‘superglobal’ o una variable automatic global. Esto quiere decir que está disponible desde cualquier parte del script y que no hace falta hace global $variable para acceder a ella.
$_FILES: Es una variable tipo array asociativo de elementos cargados al script actual a través del método POST. Esta es una variable ‘superglobal’ o una variable automatic global. Esto quiere decir que está disponible desde cualquier parte del script y que no hace falta hace global $variable para acceder a ella.
$_REQUEST: Es un array asociativo que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE. Esta es una variable ‘superglobal’ o una variable automatic global. Esto quiere decir que está disponible desde cualquier parte del script y que no hace falta hace global $variable para acceder a ella. Las variables en $_REQUEST se proporcionan al script a través de los mecanismos de entrega GET, POST y COOKIE y por tanto se pueden ser manipulados por el usuario remoto y no debe confiar en el contenido. La presencia y el orden de las variables listadas en este array se definen según la directiva de configuración PHP variables_order.
$_SESSION: Es un array asociativo que contiene variables de sesión disponibles para el script actual. Esta es una variable ‘superglobal’ o una variable automatic global. Esto quiere decir que está disponible desde cualquier parte del script y que no hace falta hace global $variable para acceder a ella.
Esta variable va acompañada por session_start(), que crea una sesión o reanuda la actual basada en un identificador de sesión pasado mediante una petición GET o POST.
$_ENV: Es una variable de tipo array asociativo de variables pasadas al script actual a través del método del entorno.
Estas variables son importadas en el espacio de nombres global de PHP desde el entorno bajo el que está siendo ejecutado el intérprete PHP. Muchas son entregadas por el intérprete de comandos bajo el que PHP está corriendo y diferentes sistemas suelen tener diferentes tipos de intérpretes de comandos, una lista definitiva es imposible.
$_COOKIE: Es una variable de tipo array asociativo de variables pasadas al script actual a través de cookies http. Esta es una variable ‘superglobal’ o una variable automatic global. Esto quiere decir que está disponible desde cualquier parte del script y que no hace falta hace global $variable para acceder a ella.
$php_errormsg: Es una variable que contiene el texto del último mensaje de error generado por PHP. Esta variable solo estará disponible dentro del ámbito donde ocurrió el error, y solamente funcionará si la opción de configuración track_errors está activada (por defecto está en off).
Si está definido un gestor de errores (set_error_handler()), $php_errormsg estará establecido solamente si el gestor de errores devuelve FALSE.
$HTTP_RAW_POST_DATA: Contiene los datos POST sin tratar.
$http_response_header: Contieen los encabezados de respuesta HTTP. El array $http_response_header es similar a la función get_headers(). Cuando se hace uso de HTTPwrapper, $http_response_header será poblado con los encabezados de respuesta HTTP. $http_response_header será creada en ámbito global.
$argc: Contiene el número de argumentos pasados al script actual cuando se ejecuta desde la línea de comandos. Esta variable sólo está disponible cuando register_argc_argv está activa.
$argv: Contiene un array de todos los argumentos pasado a un script cuando se ejecuta desde la línea de comandos. El primer argumento $argv[0] siempre es el nombre del fichero que fue usado para ejecutar el script. Esta variable no está disponible si register_argc_argv está deshabilitado.