Cookies en PHP

  • Por
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.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Alberto

25/10/2008
Muchas gracias!!! ahora sí que he podido entender las cookies php. Ni que decir tiene que todas las aplicaciones de las cookies están sujetas a la configuración del navegador del usuario. Pero claro que nunca podemos saber si el usuario acepta cookies o no y mejor es utilizarlas, porque no saber si son aceptadas o no, no es razón para no utilizarlas.

25/10/2008
Existe alguna manera de saber si son aceptadas las cookies en el navegador del usuario usando PHP.???

agustin

27/1/2009
Si se puede saber si el usuario acepta, simplemente hay que crear una e intentar leerla, si tienes exito pues si las acepta

Hulehule20

12/3/2012
Nombre en una Cookie
Hola a todos! Estoy probando con las cookies de PHP y me he encontrado un problema. He intentado hacer un mecanismo para que cuando alguien entre en mi pagina le pregunte el nombre el nombre (pude ser con un prompt o un input sencillo), pero solo si el nombre no ha sido guardado antes en un cookie. Si es así, o después de introducirlo, que se vea en el principio de la página un mensaje que diga "Hola, (nombre)". Y que cuando el usuario vuelva a entrar a la página el nombre ya le salga ahí, ya que se ha guardado en una cookie. También me gustaría saber si hay alguna manera e utilizar cookies en JavaScript para hacerlo así todo con Javascript.
Muchas gracias por vuestros manuales y vuestra ayuda!

Hulehule20