Explicaciones completas sobre cookies en PHP, con todos los parámetros de la función setcookie() y el array $_COOKIE
En este artículo del Manual de PHP vamos a demostraros que las cookies en PHP son muy fáciles de utilizar. Ya empezamos a explicar algunas claves interesantes sobre este asunto en el artículo utilización de cookies, anterior entrega del temario de DesarrolloWeb.com sobre la programación en PHP.
En el presente artículo vamos a mostrar otros detalles que conviene saber para trabajar con las cookies. Tanto los procesos de creación como los de lectura, pero sobre todo vamos a realizar un estudio completo sobre los diferentes parámetros que tenemos disponibles a la hora de llamar a la función setcookie(), que sirve para dar de alta las galletitas en el navegador del usuario que visita nuestra web.
Crear cookies en PHP
En PHP las cookies se controlan por medio de una función, que nos sirve para generarlas y guardarlas en el navegador del usuario. Es la función setcookie(), que recibe varios parámetros, entre ellos, el nombre de la cookie, el valor y la caducidad. El único parámetro obligatorio es el primero, el nombre de la cookie, los demás son opcionales.
Veamos la lista entera de parámetros de setcookie() con sus explicaciones:
Nombre
Un string con el nombre que queremos darle a la cookie a guardar. Puede ser cualquiera que deseemos.
Valor
Una cadena de caracteres que es el valor que va a tener la cookie.
Caducidad
Es un timestamp con el valor de la fecha en la que caducará la cookie. Lo normal es utilizar la función time(), que genera el timestamp actual y sumarle el número de segundos que quedamos que dure la cookie. Por ejemplo, time() + (60 * 60 * 24 * 365) haría que la cookie durase un año en el sistema del usuario.
Ruta
El camino o ruta donde la cookie se podrá utilizar dentro del dominio. Por defecto, la cookie se podrá utilizar en el directorio donde se ha creado y sus subdirectorios. Si indicamos "/" la cookie tendrá validez dentro de todo el dominio.
Dominio
Es el subdominio donde se podrá acceder a la cookie. Las cookies sólo se pueden generar y utilizar para el dominio de la página donde está colocado el script, pero podemos hacerlo visible para todos los subdominios del dominio de la web por medio de ".midominio.com".
Seguro
Es un boleano que, si es true, indica que la cookie sólo puede ser transmitida por shttp (http seguro).
Sólo http
Esto es otro boleano que sirve para indicar que la cookie sólo puede ser accedida por medio de las cabeceras del http, lo que la haría inalcanzable para lenguajes de script en el cliente como Javascript. Este parámetro fue añadido en PHP 5.2.0
La function setcookie() de PHP genera y envía la cookie al navegador y devuelve un boleano, si es true indica que se pudo incluir en el navegador del usuario y si es false indica que no ha podido colocarla en el sistema. Pero este valor no indica que luego el visitante la haya aceptado o no, puesto que el navegador puede haberlo configurado para no aceptar cookies y esto no lo puede detectar setcookie() directamente.
Por ejemplo, estas serían diferentes llamadas a setcookie():
setcookie("migalleta", "mivalor");
setcookie("cookie2", "mivalor2", time() + 3600);
setcookie("otracookie", "valorfinal", time() + 3600, "/", ".midominio.com");
Pero atención en un asunto: Para enviar una cookie al navegador se debe hacer antes de haber enviado las cabeceras del http al cliente, es decir, antes de haber escrito cualquier texto en la página. Si no, PHP podrá lanzar un error de headers already sent (cabeceras ya enviadas).
Recuperar cookies con PHP
Por otra parte, para recibir las cookies que el navegador del usuario pueda tener creadas en el sistema se utiliza el array asociativo $_COOKIE. En este array están todas las cookies que tiene disponible la página PHP en el dominio y el directorio donde está colocado.
Por medio del nombre de la cookie accedemos a su valor:
$_COOKIE["migalleta"];
$_COOKIE["cookie2"];
Para ver un ejemplo de uso de cookies PHP acceder al taller de PHP Estilos CSS distintos a una página con PHP y cookies o al Videotutorial sobre las Cookies en PHP.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...