JTagua

Inicio » PHP » Variables, PHP » Variables predefinidas. » Tutorial PHP: Variables predefinidas.

Tutorial PHP: Variables predefinidas.


PHP proporciona una gran cantidad de variables predefinidas para todos los scripts. Las variables representan de todo, desde variables externas hasta variables de entorno incorporadas, desde los últimos mensajes de error hasta los últimos encabezados recuperados.

Tabla de contenidos

Superglobals — 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 — Información del entorno del servidor y de ejecución
$_GET — Variables HTTP GET
$_POST — Variables HTTP POST
$_FILES — Variables de Carga de Archivos HTTP
$_REQUEST — Variables HTTP Request
$_ENV — Variables de entorno

$_SESSION — Variables de sesión
$_COOKIE — Cookies 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

Superglobals — Superglobals son variables internas que están disponibles siempre en todos los ámbitos.

No es necesario emplear global $variable; para acceder a ellas dentro de las funciones o métodos.

Las variables superglobals son:

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_REQUEST
  • $_ENV
  • $_SESSION
  • $_COOKIE

$_SERVER

(PHP 4 >= 4.1.0, PHP 5)

Información del entorno del servidor y de ejecución

Descripción

$_SERVER es un array que contiene información, tales como cabeceras, rutas y localizaciones del código. Las entradas en este array son creadas por el servidor web. No existe garantía que cada servidor web proporcione todas estas entradas, ya que existen servidores que pueden omitir algunas o proporcionar otras que no se encuentran recogidas aquí. Un gran número de estas variables se encuentran recogidas en » especificación CGI 1.1, así que al menos debe esperar encontrar estas entradas.

$HTTP_SERVER_VARS contiene la misma información inicial, pero no es una variable superglobal. (Fijese que $HTTP_SERVER_VARS y $_SERVER son diferentes variables y que por tanto PHP las trata diferente).

Puede encontrar o no los siguientes elementos en $_SERVER. Tenga en cuenta que si ejecuta PHP desde línea de comando pocos o ninguno de los siguientes elementos estarán disponibles (o tendrán algún significado).

PHP_SELF
El nombre del archivo de script ejecutándose actualmente, relativa al directorio raíz de documentos del servidor. Por ejemplo, el valor de $_SERVER[‘PHP_SELF’] en un script ejecutado en la dirección http://example.com/test.php/foo.bar será /test.php/foo.bar. La constante __FILE__ contiene la ruta completa del fichero actual, incluyendo el nombre del archivo. Si PHP se está ejecutando como un proceso de línea de comando, esta variable es el nombre del script desde PHP 4.3.0. En anteriores versiones no estaba disponible.
‘argv’
Array de los argumentos enviados al script. Cuando se ejecuta el script en línea de comando se obtiene acceso a los parámetros de línea 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 (si se ejecuta en línea de comando).
GATEWAY_INTERFACE
Número de revisión de la especificación CGI que está empleando el servidor, por ejemplo ‘CGI/1.1‘.
SERVER_ADDR
La dirección IP del servidor donde se está ejecutando 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, por ejemplo ‘HTTP/1.0‘.
REQUEST_METHOD
Método de petición empleado para acceder a la página, es decir ‘GET‘, ‘HEAD‘, ‘POST‘, ‘PUT‘.

Nota:

El script de PHP se considera terminado después de enviar las cabeceras (es decir después de producir cualquier resultado sin emplear buffers para el resultado) si el método de la petición empleado era HEAD.

REQUEST_TIME
Fecha Unix de inicio de la petición. Disponible desde PHP 5.1.0.
REQUEST_TIME_FLOAT
El timestamp del inicio de la solicitud, con precisión microsegundo. Disponible desde PHP 5.4.0.
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á ejecutando el script actual, según está definida en el 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. Por ejemplo: ‘iso-8859-1,*,utf-8‘.
HTTP_ACCEPT_ENCODING
Contenido de la cabecera Accept-Encoding: de la petición actual, si existe. Por ejemplo: ‘gzip‘.
HTTP_ACCEPT_LANGUAGE
Contenido de la cabecera Accept-Language: de la petición actual, si existe. Por ejemplo: ‘en‘.
HTTP_CONNECTION
Contenido de la cabecera Connection: de la petición actual, si existe. Por ejemplo: ‘Keep-Alive‘.
HTTP_HOST
Contenido de la cabecera Host: de la petición actual, si existe.
HTTP_REFERER
Dirección de la pagina (si la hay) que emplea el agente de usuario para la pagina actual. Es definido por el agente de usuario. No todos los agentes de usuarios lo definen y algunos permiten modificar 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: de la petición actual, si existe. Consiste en una cadena que indica el agente de usuario empleado para acceder a la pagina. Un ejemplo típico es: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre otras opciones, 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.

Nota: Tenga en cuenta que si se emplea ISAPI con IIS el valor será off si la petición no se ha realizado a través del 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 actual el usuario. La obtención inversa del dns está basada en la REMOTE_ADDR del usuario.

 Su servidor web debe estar configurado para crear esta variable. Por ejemplo en Apache necesita que exista HostnameLookups On dentro de httpd.conf. Consulte tambien gethostbyaddr().

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ón es redirigida internamente.
SCRIPT_FILENAME
La ruta del script ejecutándose actualmente en forma absoluta.

Nota:

Si un script se ejecuta mediante CLI como ruta relativa, como por ejemplo file.php o ../file.php, entonces $_SERVER[‘SCRIPT_FILENAME’] contendrá la ruta relativa especificada por el usuario.

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. Para las configuraciones por omisión, el valor será ‘80‘; el empleo de SSL, por ejemplo, cambiará dicho valor al valor definido para el puerto HTTP seguro.

Nota: Bajo Apache 2, se debe establecer UseCanonicalName = On, así como UseCanonicalPhysicalPort = On para poder obtener el puerto físico (real), de otro modo, este valor podría ser burlado y podría o no devolver el valor del puerto físico. No es seguro confiar en este valor en contextos que requieran seguridad.

SERVER_SIGNATURE
Cadena que contiene la versión del servidor y el nombre del host virtual que son añadidas a 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 de virtual a real realizada por el servidor.

Nota: A partir de PHP 4.3.2, PATH_TRANSLATED no está definida de forma implícita en el SAPI de Apache 2, en comparación a la situación de Apache 1, donde era necesario establecer el mismo valor que la variable del servidor SCRIPT_FILENAME cuando no era proporcionada por Apache. Este cambio ha sido realizado para cumplir la especificación CGI donde PATH_TRANSLATED sólo debe existir si PATH_INFO esta definida. Los usuarios de Apache 2 pueden emplear AcceptPathInfo = On dentro de httpd.conf para definir PATH_INFO.

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 incluido.
REQUEST_URI
La URI que se empleó para acceder a la página. Por ejemplo: ‘/index.html‘.
PHP_AUTH_DIGEST
Cuando se hace autenticación Digest HTTP, esta variable se establece para el encabezado ‘Authorization’ enviado por el cliente (el cual se debe entonces usar para hacer la validación apropiada).
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, está variable se establece para 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. Por ejemplo, si el script actual se accede a través de la URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, entonces $_SERVER[‘PATH_INFO’] contendrá /some/stuff.
ORIG_PATH_INFO
Versión original de ‘PATH_INFO‘ antes de ser procesado por PHP.
<?php
 echo "PHP_SELF : " . $_SERVER['PHP_SELF'] . "<br />";
 echo "GATEWAY_INTERFACE : " . $_SERVER['GATEWAY_INTERFACE'] . "<br />";
 echo "SERVER_ADDR : " . $_SERVER['SERVER_ADDR'] . "<br />";
 echo "SERVER_NAME : " . $_SERVER['SERVER_NAME'] . "<br />";
 echo "SERVER_SOFTWARE : " . $_SERVER['SERVER_SOFTWARE'] . "<br />";
 echo "SERVER_PROTOCOL : " . $_SERVER['SERVER_PROTOCOL'] . "<br />";
 echo "REQUEST_METHOD : " . $_SERVER['REQUEST_METHOD'] . "<br />";
 echo "REQUEST_TIME : " . $_SERVER['REQUEST_TIME'] . "<br />";
 echo "REQUEST_TIME_FLOAT : " . $_SERVER['REQUEST_TIME_FLOAT'] . "<br />";
 echo "QUERY_STRING : " . $_SERVER['QUERY_STRING'] . "<br />";
 echo "DOCUMENT_ROOT : " . $_SERVER['DOCUMENT_ROOT'] . "<br />";
 echo "HTTP_ACCEPT : " . $_SERVER['HTTP_ACCEPT'] . "<br />";
 echo "HTTP_ACCEPT_CHARSET : " . $_SERVER['HTTP_ACCEPT_CHARSET'] . "<br />";
 echo "HTTP_ACCEPT_ENCODING : " . $_SERVER['HTTP_ACCEPT_ENCODING'] . "<br />";
 echo "HTTP_ACCEPT_LANGUAGE : " . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . "<br />";
 echo "HTTP_CONNECTION : " . $_SERVER['HTTP_CONNECTION'] . "<br />";
 echo "HTTP_HOST : " . $_SERVER['HTTP_HOST'] . "<br />";
 echo "HTTP_REFERER : " . $_SERVER['HTTP_REFERER'] . "<br />";
 echo "HTTP_USER_AGENT : " . $_SERVER['HTTP_USER_AGENT'] . "<br />";
 echo "HTTPS : " . $_SERVER['HTTPS'] . "<br />";
 echo "REMOTE_ADDR : " . $_SERVER['REMOTE_ADDR'] . "<br />";
 echo "REMOTE_HOST : " . $_SERVER['REMOTE_HOST'] . "<br />";
 echo "REMOTE_PORT : " . $_SERVER['REMOTE_PORT'] . "<br />";
 echo "REMOTE_USER : " . $_SERVER['REMOTE_USER'] . "<br />";
 echo "REDIRECT_REMOTE_USER : " . $_SERVER['REDIRECT_REMOTE_USER'] . "<br />";
 echo "SCRIPT_FILENAME : " . $_SERVER['SCRIPT_FILENAME'] . "<br />";
 echo "SERVER_ADMIN : " . $_SERVER['SERVER_ADMIN'] . "<br />";
 echo "SERVER_PORT : " . $_SERVER['SERVER_PORT'] . "<br />";
 echo "SERVER_SIGNATURE : " . $_SERVER['SERVER_SIGNATURE'] . "<br />";
 echo "PATH_TRANSLATED : " . $_SERVER['PATH_TRANSLATED'] . "<br />";
 echo "SCRIPT_NAME : " . $_SERVER['SCRIPT_NAME'] . "<br />";
 echo "REQUEST_URI : " . $_SERVER['REQUEST_URI'] . "<br />";
 echo "PHP_AUTH_DIGEST : " . $_SERVER['PHP_AUTH_DIGEST'] . "<br />";
 echo "PHP_AUTH_USER : " . $_SERVER['PHP_AUTH_USER'] . "<br />";
 echo "PHP_AUTH_PW : " . $_SERVER['PHP_AUTH_PW'] . "<br />";
 echo "AUTH_TYPE : " . $_SERVER['AUTH_TYPE'] . "<br />";
 echo "PATH_INFO : " . $_SERVER['PATH_INFO'] . "<br />";
 echo "ORIG_PATH_INFO : " . $_SERVER['ORIG_PATH_INFO'] . "<br />";
?>

$_GET

(PHP 4 >= 4.1.0, PHP 5)

Descripción

Un array asociativo de variables pasadas vía parámetros por URL.

Ejemplo1 Ejemplo de $_GET

<?php
echo 'Hola ' . htmlspecialchars($_GET["nombre"]) . '!';
?>

Asumiendo que el usuario introdujo http://example.com/?nombre=Juan

El resultado del ejemplo sería algo similar a:

Hola Juan!

$_POST

(PHP 4 >= 4.1.0, PHP 5)

Descripción

Un array asociativo de variables pasadas al script actual a través del método HTTP POST.

Versión Descripción
4.1.0 Se introdujo $_POST y $HTTP_POST_VARS quedó obsoleta.

Ejemplo1 Ejemplo de $_POST

El código

<form action='accion.php' method='post' >
Su nombre: <input type='text' name=nombre > <br />
Su edad: <input type='text' name=edad > <br />
<input type='submit' >
</form>

genera la siguiente salida

Image1

Si suponemos que se introduce, Vicente y 30, entonces

la salida producida será:

Image2

$_FILES

(PHP 4 >= 4.1.0, PHP 5)

Descripción.

Esta variable permite tener acceso a cualquier archivo binario que hayamos enviado en el formulario, esta variable establece algunas propiedades por defecto como

  • name: Es el nombre original del archivo.
  • type:  Es el tipo de archivo, por ejemplo si es un archivo de Word, esto no permite filtrar el tipo de archivo que se puede enviar al servidor.
  • tmp_name: El archivo que se sube se guarda mientras el script se ejecuta en un carpeta temporal y PHP lo renombra con una nombre aleatorio solo para referencia, una vez el script termina el archivo se elimina del servidor, por esta razón debemos, o bien moverlo o copiarlo a otra carpeta, esta propiedad apunta al archivo como tal.
  • error: Si hubira un error al subirlos nos indica que error fue en esta propiedad.
  • size: Nos dice el tamaño del archivo en bytes.
Versión Descripción
4.1.0 Se introdujo $_FILES, haciendo $HTTP_POST_FILES obsoleta.

Esta es una ‘superglobal’ o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.

 El formulario,

<html>
<head>
<title>Ejercicio $_FILES</title>;
</head>
<body>
<form action='upload0.php' method='post' enctype='multipart/form-data'>
Seleccione el archivo:
<input type='file' name='foto' >
<input type='submit' value='Enviar' >
</form>
</body>
</html>

produce

Image4Si se carga una foto y se envia al script

<html>
<head>
<title>Problema $_FILES</title>
</head>
<body>
<?php
copy($_FILES['foto']['tmp_name'],$_FILES['foto']['name']);
echo 'La foto se registro en el servidor';
$nom=$_FILES['foto']['name'];
echo 'imagen '.$nom;
?>
</body>
</html>

$_REQUEST

(PHP 4 >= 4.1.0, PHP 5)

Descripción.

Un array asociativo que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE.

Versión Descripción
5.3.0 Se introdujo request_order. Esta directiva afecta al contenido de $_REQUEST.
4.3.0 Se eliminó la información $_FILES de $_REQUEST.
4.1.0 Se introdujo $_REQUEST.

Notas.

Esta es una ‘superglobal’ o una variable automatic global. Significa simplemente que es una variable que está disponible en cualquier parte del script. No hace falta hacer global $variable; para acceder a la misma desde funciones o métodos.

Cuando se ejecuta en la línea de comandos , no se incluirán las entradas argv y argc; ya que están presentes en el array $_SERVER

Las variables en $_REQUEST se proporcionan al script a través de los mecanismos de entrada GET, POST, y COOKIE y por lo tanto 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.

y así por ejemplo el formulario

<h1>Formulario</h1>
<form action="procesa4.php" method="post">
Nombre <input type="text" name="nombre"> <br />
Apellido <input type="text" name="apellido"> <br />
<input type="submit" value="Aceptar">
</form>

produce la salida

Image11Este script llama a este otro,
<h1>Procesa</h1>
<?
    $nombre = $_REQUEST['nombre'];
    $apellido = $_REQUEST['apellido'];
?>
<h2>Su nombre es <?= $nombre ?></h2>
<h2>Su apellido es <?= $apellido ?></h2>
<h2>$_REQUEST</h2>
<xmp>
<?php print_r($_REQUEST); ?>
</xmp>
<h2>$_POST</h2>
<xmp>
<?php print_r($_POST); ?>
</xmp>
y que a su vez produce la siguiente salida,
Image22

$_ENV

(PHP 4 >= 4.1.0, PHP 5)

$_ENV  — Variables de entorno

Descripción.

Una variable 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. Por favor consulte la documentación de su intérprete de comandos para una lista de las variables de entorno que se definen.

Otras variables de entorno incluyen las variables CGI, colocadas allí independientemente de que PHP esté siendo ejecutado como módulo del servidor o procesador CGI.


<?php
<table border=0>
foreach ($_ENV as $clave=>$valor)
{
echo $clave." = ".$valor."";
}
</table>
?>

$_SESSION

(PHP 4 >= 4.1.0, PHP 5)

$_SESSION -— Variables de sesión

Descripción.

Es un array asociativo que contiene variables de sesión disponibles para el script actual. Ver la documentación de Funciones de sesión para más información sobre su uso.

Haremos un problema muy sencillo, cargaremos en un formulario el nombre de usuario y clave de un cliente, en la segunda página crearemos dos variables de sesión y en una tercera página recuperaremos los valores almacenados en las variables de sesión.
La primera página es un formulario HTML puro:

<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina2.php" method="post">
Ingrese nombre de usuario:
<input type="text" name="campousuario"><br>
Ingrese clave:
<input type="password" name="campoclave"><br>
<input type="submit" value="confirmar">
</form>
</body>
</html>

La segunda página es donde creamos e inicializamos las dos variables de sesión:

<?php
session_start();
$_SESSION['usuario']=$_REQUEST['campousuario'];
$_SESSION['clave']=$_REQUEST['campoclave'];
?>
<html>
<head>
<title>Problema</title>
</head>
<body>
Se almacenaron dos variables de sesión.<br><br>
<a href="pagina3.php">Ir a la tercer página donde se recuperarán
las variables de sesión</a>
</body>
</html>

Cuando creamos o accedemos al contenido de variables de sesión debemos llamar a la función session_start() antes de cualquier salida de marcas HTML.
La última página de este ejemplo tiene por objetivo acceder a las variables de sesión:


<?php
session_start();
?>
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
echo "Nombre de usuario recuperado de la variable de sesión:".$_SESSION['usuario'];
echo "<br><br>";
echo "La clave recuperada de la variable de sesión:".$_SESSION['clave'];
?>
</body>
</html>

De nuevo vemos que la primera línea de esta página es la llamada a la función session_start() que, entre otras cosas, rescata de un archivo de texto las variables de sesión creadas para ese usuario (recordemos que desde el navegador todas las veces retorna una cookie con la clave que generó PHP la primera vez que llamamos a una página del sitio).
Tengamos en cuenta que en cualquier otra página del sitio tenemos acceso a las variables de sesión sólo con llamar inicialmente a la función session_start().

$_COOKIE

(PHP 4 >= 4.1.0, PHP 5)

$_COOKIE — HTTP Cookies

Description.

Matriz asociativa donde se pasan las HTTP Cookies.

Para crear una cookie que sólo tenga existencia mientras no cerremos la ventana del navegador, pasaremos como fecha de expiración de la cookie, el valor cero. Una vez que la instancia del navegador se cierra, dicha cookie desaparecerá.

Este tipo de cookie puede ser muy útil para validar un usuario en un conjunto de páginas, si previamente ingresó correctamente su nombre de usuario y clave. Es decir, una vez validado el usuario, se verifica en páginas sucesivas si existe la cookie. Una vez que el usuario cierra el navegador, no hay posibilidad

El protocolo HTTP es desconectado. Esto significa que cada vez que solicitamos una página a un servidor representa una conexión distinta.

Una cookie es una pequeña cantidad de datos almacenada por el navegador del usuario cuando solicita una página a un servidor. El que envía que se genere la cookie es el servidor.

Una cookie consta de un nombre, un valor, una fecha de expiración y un servidor. Una cookie está limitada a 4KB.

Luego que una cookie es creada sólo el sitio que la creó puede leerla. Luego de creada una cookie, cada vez que el navegador del usuario visita el sitio, se envía dicha cookie. Otra cosa importante que hay que tener en cuenta es que el usuario del browser puede configurar el mismo para no permitir la creación de cookies, lo que significa que el uso de cookies debe hacerse con moderación y cuando la situación lo requiera. De todos modos, el 95% de los navegadores están configurados para permitir la creación de cookies.
Para la creación de una cookie desde PHP debemos llamar a la función setcookie.

Los parámetros de esta función son:
setcookie( <nombre de la cookie>, <valor de la cookie>, <fecha de expiración>, <carpeta del servidor>)

Con un problema sencillo entenderemos el uso de esta función. Supongamos que queremos que los usuarios que entran a nuestro sitio puedan configurar con qué color de fondo de página quiere que aparezca cada vez que ingresa al sitio. Al color seleccionado por el visitante lo almacenaremos en una cookie. En caso que no exista el color, por defecto es blanco.

La primera página mostrará un formulario con tres controles de tipo radio para la selección del color. También esta página verificará si existe la cookie creada, en caso afirmativo fijará el fondo de la página con el valor de la cookie. Tengamos en cuenta que la primera vez que ejecutemos este programa la página es de color blanco, luego variará según el color seleccionado en el formulario.

El código de la primera página es:

<?php
 if (isset($_COOKIE['color'])) echo " bgcolor=\"$_COOKIE[color]\""
?>
<form action="pagina2.php" method="post">
Seleccione de que color desea que sea la página:
<input type="radio" name="radio" value="rojo" />Rojo
<input type="radio" name="radio" value="verde" />Verde
<input type="radio" name="radio" value="azul" />Azul
<input type="submit" value="Crear cookie" />
</form>

El formulario no varía en nada respecto a otros vistos. Lo más importante es el bloque PHP que verifica si ya existe la cookie en el navegador del cliente. Es importante entender que la primera vez que ejecutemos esta página la cookie no existe, por lo que el if se verifica falso:

<?php
 if (isset($_COOKIE['color'])) echo " bgcolor=\"$_COOKIE[color]\""
?>

El vector asociativo $_COOKIE almacena todas las cookies creadas por el visitante. Si es la primera vez que peticionamos esta página, el vector $_COOKIE no tendrá elementos.
Es decir que la marca body no tiene inicializada la propiedad bgcolor.

La segunda página es la que crea la cookie propiamente dicha:

<?php
 if ($_REQUEST['radio']=="rojo")
   setcookie("color","#ff0000",time()+60*60*24*365,"/");
 elseif ($_REQUEST['radio']=="verde")
   setcookie("color","#00ff00",time()+60*60*24*365,"/");
 elseif ($_REQUEST['radio']=="azul")
   setcookie("color","#0000ff",time()+60*60*24*365,"/");
?>
<a href="pagina1.php">Ir a la otra página</a>

La llamada a la función setcookie debe hacerse antes de imprimir cualquier marca HTML, de lo contrario no funcionará.
Como podemos observar, la creación de la cookie se hace llamando a la función setcookie:

<?php
 if ($_REQUEST['radio']=="rojo")
   setcookie("color","#ff0000",time()+60*60*24*365,"/");
 elseif ($_REQUEST['radio']=="verde")
   setcookie("color","#00ff00",time()+60*60*24*365,"/");
 elseif ($_REQUEST['radio']=="azul")
   setcookie("color","#0000ff",time()+60*60*24*365,"/");
?>

El nombre de la cookie se llama “color” y el valor que almacenamos depende de qué control de tipo radio esté seleccionado en la página anterior. La fecha de expiración de la cookie la calculamos fácilmente llamando a la función time() que nos retorna la fecha actual en segundos y le sumamos el producto 60*60*24*365 (60 segundos * 60 minutos * 24 horas * 365 días) es decir que la cookie existirá en la máquina del visitante hasta el año próximo.

Cuando indicamos como directorio la sintaxis “/” significa que la cookie se crea a nivel del sitio y con cuaquier petición a dicho sitio, el navegador enviará la cookie al servidor.

Por último dispusimos en esta página un hipervínculo a la página anterior, para ver que, de ahora en más, cada vez que ejecutemos la pagina1.php, el color de fondo de la misma dependerá del valor de la cookie registrada.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: