martes, 19 de agosto de 2014

Las variables superglobales en PHP - 1 de 2



1. $GLOBALS

En el capítulo Funciones y estructuras de control - Las funciones, hemos visto que hay variables locales y globales. Estas variables tienen un alcance determinado dependiendo de dónde se declaran.

En PHP existe la tabla $GLOBALS o "superglobal" que contiene valores válidos, sea cual sea su alcance, es decir, en cualquier ubicación de la página PHP. Esta tabla tiene como índice el nombre de las variables, y como valor, el valor de las variables.

Por ejemplo:

<?php
$nombre = "Juan";
$apellido = "Gómez";
funcion concatenada() {
$GLOBALS[’nombre’] = $GLOBALS[’nombre’] . " " . $GLOBALS[’apellido’];
}
concatena(); //concatena el nombre y el apellido
echo $nombre;
?>

Da como resultado:

Juan Gómez

Si ha escrito en la función $nombre = $nombre . " " . $apellido; PHP generará un error debido a que estas variables no tienen el alcance necesario para que la función las pueda conocer.

Puede pensar que resulta más sencillo declarar solo las variables superglobales, pero no es así. Esto evita muchas confusiones a la hora de declarar las variables en modo local y sobre todo ahorra mucha memoria si muchos usuarios visitan su sitio Web de manera simultánea; cada variable $GLOBALS ocupará memoria en su servidor y correrá el riesgo de saturarse. Si utiliza variables locales, PHP liberará la memoria que ya no se utiliza.

Más adelante veremos que existen otras variables superglobales. Se escriben siempre con mayúsculas, en forma de tabla y son válidas en todas las páginas PHP.


2. $_SERVER

$_SERVER es una tabla que se crea automáticamente y que contiene información, como rutas del script, encabezamientos, etc.

Veamos parte de la información más útil:

  • $_SERVER[’REMOTE_ADDR’]: permite conocer la dirección IP del usuario que ha solicitado la página.

Por ejemplo:

<?php
echo $_SERVER[’REMOTE_ADDR’];
?>

Da como resultado:

127.0.0.1

Si está trabajando con su equipo y su servidor Web crea la dirección http://127.0.0.1 y está ejecutando esta página PHP, $_SERVER[’REMOTE_ADDR’] reenvía esta misma dirección.

  • $_SERVER[’PHP_SELF’]: permite conocer el nombre del script que se utiliza actualmente.

Por ejemplo:

<?php
echo $_SERVER[’PHP_SELF’];
?>

Da como resultado:

/prueba.php

La página PHP que contiene este código se llama prueba.php.

  • $_SERVER[’REQUEST_METHOD’]: permite conocer el método de consulta que se utiliza.

Estos métodos son: GET, POST, PUT y HEAD, y se explicarán más adelante.

Por ejemplo:

<?php
echo $_SERVER[’REQUEST_METHOD’];
?>

Da como resultado:

GET

  • $_SERVER[’QUERY_STRING’]: permite conocer la cadena de consulta que se utiliza, es decir, las variables y los valores que pasan por la URL.

Por ejemplo, si llama a la página PHP pasando como argumento una variable var igual a 1, es decir, http://127.0.0.1/prueba.php?var=1:

<?php
echo $_SERVER[’QUERY_STRING’];
?>

Da como resultado:

var=1

  • $_SERVER[’HTTP_USER_AGENT’]: permite conocer la versión del navegador y sus librerías que se utilizan para mostrar la página actual.

Por ejemplo:

<?php
echo $_SERVER[’HTTP_USER_AGENT’];
?>

Da como resultado:

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36(KHTML, Like Gecko)/ Chrome/29.0.1547.76 Safari/537.36

  • $_SERVER[’HTTP_ACCEPT_LANGUAGE’]: permite conocer el idioma que utiliza su navegador.

Por ejemplo:

<?php
echo $_SERVER[’HTTP_ACCEPT_LANGUAGE’];
?>

Da como resultado:

es_ES

  • $_SERVER[’HTTP_HOST’]: permite conocer el nombre del servidor y su dirección IP.

Por ejemplo:

<?php
echo $_SERVER[’HTTP_HOST’];
?>

Da como resultado:

127.0.0.1

Se obtiene el mismo resultado con $_SERVER[’REMOTE_ADDR’]. Cuando trabaja en modo local, lo hace como cliente y servidor al mismo tiempo.


3. $_ENV

Esta tabla contiene las variables de entorno del sistema operativo, como el nombre de usuario y del equipo. Tenga cuidado al comprobar si php.ini tiene variables_order = "EGPCS". En el siguiente capítulo explicaremos el contenido de este archivo, al que se accede a través del menú Configuration - PHP. A continuación, debe reiniciar el servidor Web una vez que guarde el archivo.

Veamos parte de la información más útil:

  • $_ENV[’USERNAME’]: permite conocer el nombre del usuario que se conecta a Windows.

Por ejemplo:

<?php
echo $_ENV[’USERNAME’];
?>

Da como resultado:

Juan Gómez

Si se conecta en Windows con este identificador.

  • $_ENV[’COMPUTERNAME’]: permite conocer el nombre del equipo de la persona que ejecuta esta página PHP.

Por ejemplo:

<?php
echo $_ENV[’COMPUTERNAME’];
?>

Da como resultado:

EQUIPO 1

  • $_ENV[’OS’]: permite conocer el sistema operativo de la persona que ejecuta esta página PHP.

Por ejemplo:

<?php
echo $_ENV[’OS’];
?>

Da como resultado:

Windows_NT

Si introduce el siguiente código, podrá obtener todos los valores de la tabla $_ENV:

<?php
echo ’<pre>’;
print_r($_ENV);
echo ’</pre>’;
?>

Da como resultado:

Array
(
[ALLUSERSPROFILE] => C:\ProgramData
[AMDAPPSDKROOT]=>C:\Program Files (x86)\AMD APP\
[APPDATA]=>C:\Users\Olivier\AppData\Roaming
etc.
)


4. $_SESSION

Una sesión es un archivo que se almacena en el servidor de cada una de las personas que se conectan en su sitio Web. Se destruye automáticamente cuando la persona abandona el sitio Web.

$_SESSION es una tabla asociativa que permite almacenar cualquier valor de cada usuario. Esta tabla es válida en todas las páginas PHP del sitio Web y permite pasar variables de una página a otra. Tenga cuidado con no abusar de ella, porque si se conecta mucha gente en su sitio Web puede llenar la memoria del servidor Web.

Antes de utilizar $_SESSION, es imprescindible reiniciar la sesión o llamar a una sesión existente en cada página donde quiera utilizar $_SESSION. Esto se denomina session_start();.

La función session_destroy() sirve para destruir la sesión actual. Tenga cuidado porque esta función no destruye las variables de la sesión asociadas a la sesión actual. Debe utilizar también la función unset($_SESSION). La sesión se destruirá automáticamente cuando el usuario cierre la ventana de su navegador.

Por ejemplo, el siguiente código en la página prueba.php:

<?php
session_start();
$_SESSION[’nombre’] = ’Juan’;
echo "El nombre en sesión es:".$_SESSION[’nombre’];
?>

Da como resultado:

El nombre en sesión es: Juan

La página prueba.php contiene un botón que envía a la página mostrar_sesion.php. En esta página aparece el siguiente código:

<?php
session_start();
echo "El nombre en sesión siempre es:".$_SESSION[’nombre’];
?>

Da como resultado:

El nombre en sesión siempre es: Juan

De hecho, $_SESSION[’nombre’] queda en la memoria siempre y cuando no cierre su navegador.

Puede utilizar la función session_status(), que devuelve 0 si se desactivan las sesiones, 1 si se activan, pero sin guardar ninguna aquí, y 2 si se activan las sesiones, siempre y cuando se guarde al menos una de ellas.



Espero haber ayudado en algo. Hasta la próxima oportunidad!







No hay comentarios:

Publicar un comentario en la entrada