Cookies PDF
Cookies PDF
Cookies PDF
ESCUELA DE INFORMATICA
ASIGNATURA: PROGRAMACION V SECCIÓN CICLO AULA
PROFESOR(A): ING. HUGO JOEL ORTIZ 01 02-2017 VIRTUAL
Cookies
Introducción
En esta lección se trata el manejo de las cookies. Las cookies son un mecanismo
que utilizan los servidores web para guardar información en el ordenador del
usuario y recuperarla cada vez que el navegador les pide una página. La
información se guarda en el ordenador del usuario en forma de texto y está
formada por parejas (nombre de la cookie y valor de la cookie). Esta información
se utiliza para numerosos fines (autentificación, selección de preferencias, items
seleccionados en un carrito de la compra, etc.), siempre con la intención de
identificar al usuario y personalizar las páginas.
PHP tiene soporte para las «cookies» de HTTP de forma transparente. Las cookies
son un mecanismo almacenar datos en el navegador remoto para monitorizar o
identificar a los usuarios que vuelvan al sitio web. Las cookies se pueden
configurar con las funciones setcookie() o setrawcookie(). Las cookies son parte
de la cabecera HTTP, por lo que setcookie() será invocada antes de enviar
cualquier otra salida al navegador. Esta es la misma limitación que tiene la
función header(). Se pueden utilizar las funciones del búfer de salida para
retrasar la salida del script hasta que se haya decidido si establecer o no alguna
cookie o enviar cualquier otra cabecera.
Algunas cookies enviadas desde el cliente serán incluidas automáticamente en el
array autoglobal $_COOKIE si variables_order contiene "C". Para asignar varios
valores a una sola cookie, simplemente se debe agregar [] al nombre de la cookie.
Crear cookies
Las cookies se crean cuando el servidor se lo pide al navegador. Cuando el
servidor envía una página al navegador, puede incluir en las cabeceras de la
respuesta HTTP la petición de creación de una o varias cookies. El navegador crea
la cookie, guardando no sólo el nombre y el valor de la cookie, sino el nombre del
servidor (del dominio) que ha creado la cookie.
En PHP, las cookies se crean mediante la función setcookie(). Por ejemplo:
<?php
setcookie("nombre", "Pepito Conejo");
?>
Si se quiere guardar en una cookie una matriz de datos, es necesario crear cada
elemento de la matriz en una cookie distinta. Por ejemplo:
<?php
setcookie("datos[nombre]", "Pepito");
setcookie("datos[apellidos]", "Conejo");
?>
Es muy importante que los nombres de las cookies no coincidan con los nombres
de controles de los formularios, porque PHP incluye los valores de las cookies en
la matriz $_REQUEST. Es decir, que si el nombre de una cookie coincide con el
nombre de un control, en $_REQUEST sólo se guardará el valor de la cookie, no el
del control.
La creación de cookies tiene límites, pero cada navegador tiene un límite distinto.
En muchas páginas web se puede leer que el límite por dominio suele ser de 20
cookies (si se hacen más, se borran las más antiguas), que el límite de tamaño del
valor almacenado suele ser de 4096 bytes y que el límite del número total de
cookies suele ser de 300 cookies, pero estos valores pueden ser distintos en
versiones más recientes.
$nombre
Establece el nombre de la cookie.
$valor
Establece el valor que guarda la cookie
$expiracion
Establece el momento en que se borrará la cookie, expresado en segundos.
Por ello, normalmente se utiliza la función time() (que indica el momento
actual como tiempo en segundos) más la duración en segundos que
queremos que tenga la cookie.
<?php
setcookie("nombre", "Pepito Conejo", time() + 60); // Esta cookie se
borrará un minuto después de crearla.
?>
Si no se establece la duración de la cookie al crearla, la cookie se borrará al
cerrar el navegador.
$ruta
Establece los directorios del dominio a los que se enviará posteriormente
la cookie. Es decir, si el navegador solicita una página incluida en esta ruta,
el navegador enviará la cookie en la petición, si no está incluida, no enviará
el valor. Si se indica "/", se enviará a cualquier página del dominio, si no se
indica nada, la ruta es la de la página que crea la cookie.
$dominio
Establece los subdominios del dominio a los que se enviará posteriormente
la cookie (www.example.com, subdominio.example.com, etc).
$seguridad
Establece si solamente se envía bajo conexiones seguras (https) o no,
según tome el valor true o false.
$solohttp
Establece si la cookie está accesible únicamente al servidor y no al
navegador (mediante Javascript u otros lenguajes), según tome el
valor true o false.
Modificar cookies
Para modificar una cookie ya existente, simplemente se debe volver a crear la
cookie con el nuevo valor.
Borrar cookies
Para borrar una cookie, simplemente se debe volver a crear la cookie con un
tiempo de expiración anterior al presente.
<?php
setcookie("nombre", "Pepito Conejo", time() - 60); // Esta cookie se
borrará inmediatamente.
?>
<?php
setcookie("nombre"); // Esta cookie no se borra, pero no guardará ningún
valor.
?>
Utilizar cookies
Cuando el navegador solicita una página PHP a un servidor (un dominio) que ha
guardado previamente cookies en ese ordenador, el navegador incluye en la
cabecera de la petición HTTP todas las cookies (el nombre y el valor) creadas
anteriormente por ese servidor.
El programa PHP recibe los nombres y valores de las cookies y se guardan
automáticamente en la matriz $_COOKIE.
El ejemplo siguiente saluda al usuario por su nombre si el nombre del usuario
estaba guardado en una cookie.
<?php
if (isset($_COOKIE["nombre"])) {
print "<p>Su nombre es $_COOKIE[nombre]</p>\n";
} else {
print "<p>No sé su nombre.</p>\n";
}
?>
En caso de que se haya guardado una matriz en forma de cookies, el ejemplo sería
el siguiente:
<?php
if (isset($_COOKIE["datos"]["nombre"]) &&
isset($_COOKIE["datos"]["apellidos"])) {
print "<p>Su nombre es " . $_COOKIE["datos"]["nombre"] . " " .
$_COOKIE["datos"]["apellidos"] . "</p>\n";
} else {
print "<p>No sé su nombre.</p>\n";
}
?>
Un detalle importante a tener en cuenta al trabajar con cookies es el orden en
que se realiza el envío y la creación de cookies, así como su disponibilidad en
$_COOKIES:
cuando una página pide al navegador que cree una cookie, el valor de la
cookie no está disponible en $_COOKIE en esa página.
el valor de la cookie estará disponible en $_COOKIE en páginas posteriores,
cuando el navegador las pida y envíe el valor de la cookie en la petición.
Por ello, el siguiente programa no dará el mismo resultado cuando se ejecute por
primera vez que las veces posteriores:
<?php
setcookie("nombre", "Pepito Conejo");
if (isset($_COOKIE["nombre"])) {
print "<p>Su nombre es $_COOKIE[nombre]</p>\n";
} else {
print "<p>No sé su nombre.</p>\n";
}
?>
La primera vez que se ejecuta este programa, ocurren las siguientes cosas en este
orden:
el navegador pide la página, pero no envía con la petición el valor de
ninguna cookie, porque la cookie todavía no existe
el servidor envía la página:
o en la cabecera de respuesta, el servidor incluye la petición de creación
de la cookie.
o en la página escribe "No sé su nombre" porque no ha recibido ninguna
cookie del navegador.
La segunda vez (y las siguientes) que se ejecuta este programa, ocurren las
siguientes cosas en este orden:
el navegador pide la página y envía con la petición el valor de la cookie
"nombre".
el servidor envía la página:
o en la cabecera de respuesta, el servidor incluye la petición de creación
de la cookie (como es el mismo valor, la cookie se queda igual).
o en la página escribe "Su nombre es Pepito Conejo" porque ha recibido
la cookie del navegador.