Como crear y gestionar cookies en PHP

Como crear y gestionar cookies en PHP - CableNaranja
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)

¡Comparte nuestro contenido!

Para quien no lo sabe, las cookies son pequeños fragmentos de información que el servidor puede enviar dispositivo cliente de sus visitantes. Las cookies se almacenan en el navegador web del dispositivo y pueden usarse para manipular información sobre las preferencias y pautas de navegación del usuario.

En PHP, crearlas es muy fácil. Por está razón, vamos a ver el proceso para crear y manejar cookies en este lenguaje ¡Manos a la obra!

Hagamos las cookies primero

Para poder hacer una cookie, necesitamos hacer uso de la función setcookie. Esta función contiene los siguientes parámetros:

  • Name: Es el nombre de a cookie
  • Value: El valor que va a tener.
  • Expires: Es la fecha o tiempo de duración. Si no se establece, la cookie puede durar el equivalente a una sesión (de 18 a 24 minutos aprox)
  • Path: La ruta dentro del servidor donde la cookie se almacen, por default es el directorio actual.
  • Domain: El nombre de dominio del sitio.
  • Secure: El sitio usa HTTPS (true) o no (false) El valor por defecto es false
  • Httponly: La cookie piede ser accesible por HTTP (true) o no (false) Si se usa es recomendable ponerla en true

Es importante resaltar que, sólo los dos primeros elementos son obligatorios. Con esto en mente, hagamos nuestra primera cookie.

setcookie("Sitio", "CableNaranja");

Para ver la cookie, necesitamos ir a los ajustes para desarrolladores de nuestro navegador. En mi caso, me encuentro usando Opera. La ruta es la siguiente:

Como crear y manejar cookies en PHP - CableNaranja

En las Herramientas de desarrollo, buscamos la pestaña Application, luego dentro de ella la sección Storage y dentro de ella encontraremos la opción Cookies. Al abrirla, encontraremos la lista de sitios que nos han dejado una.

Como crear y manejar cookies en PHP - CableNaranja

Observemos los detalles de cada cookie.

Como crear y manejar cookies en PHP - CableNaranja

Como podemos observar, son los mismos datos que requiere la función setcookie.

Hagamos una cookie que expire

Para hacer una cookie que expire, tenemos que darle el tiempo. El tiempo puede estar expresado en formato de tiempo o contado en segundos. Adicionalmente, la cookie tiene que comenzar a ser válida desde su momento de creación hasta el tiempo que se decida.

Para hacer válido el tiempo, podemos usar diversas funciones de manejo de fecha y hora. Mis favoritas son time y strtotime. Veamos algunos ejemplos:

La segunda cookie que hagamos, durará un minuto:

setcookie("Autor", "Israel García", time()+60);

Ahora, hagamos una tercera cookie que dure 2 horas:

setcookie("Slogan", "Orange is Love", strtotime("+2 hours"));

Finalmente, hagamos una cookie que dura 1 día completo:

// 60 seg x 60 min x 24 horas = 86400
setcookie("Color", "Orange", time()-86400);

Para ver que efectivamente están activas, vamos a imprimir la fecha y hora en nuestro documento.

$hora = date("h:i:s");
$fecha = date("Y-m-d");
print_r("La fecha es: " . $fecha);
print_r("\nLa hora es: " . $hora);

Observemos el resultado para comprobar los tiempos que establecimos.

Como crear y manejar cookies en PHP - CableNaranja

Es hora de crear una cookie con todos los parámetros

Vamos a crear una cookie que utilice todos los parámetros. Por ejemplo, queremos dejar un mensaje a nuestros visitantes que dure una hora. Necesitamos que el mensaje este presente en nuestro dominio y que nos siga a todas partes (es decir desde la raíz del sitio) Como no tenemos HTTPS en este momento, lo pasaremos por HTTP.

setcookie("Mensaje", "Hola visitante", time()+3600, "/", "localhost", false, true);

Podemos verla funcionando.

Como crear y manejar cookies en PHP - CableNaranja

¿Cómo se usan las cookies en nuestras aplicaciones PHP?

Como los métodos POST y GET, tenemos acceso a un array de valores llamado $_COOKIE que las contiene todas las variables y un poco de información adicional. Observemos:

print_r($_COOKIE);

Lo cual, nos da como resultado:

Como crear y manejar cookies en PHP - CableNaranja

Entonces, podemos acceder a cada miembro por su nombre asociativo:

echo "<p>Sitio:" . $_COOKIE["Sitio"] . "</p>";
echo "<p>Slogan:" . $_COOKIE["Slogan"] . "</p>";

Lo que resulta en:

Como crear y manejar cookies en PHP - CableNaranja

También podemos crear un array dentro de una cookie:

setcookie("productos[p1]", "Camisa Azul");
setcookie("productos[p2]", "Camisa Verde");
setcookie("productos[p3]", "Pantalón");

Y manejarlo con un foreach o cualquier otro ciclo:

foreach($_COOKIE["productos"] as $producto ){
   echo "<p>Estás llevando :" . $producto . "</p>";
}

O tratar a cada elemento en individual:

echo "<p>Tu preferido es: " . $_COOKIE["productos"]["p2"] . "</p>";

Lo que nos daría:

Como crear y manejar cookies en PHP - CableNaranja

Por último, podemos modificar el contenido de una cookie, simplemente cambiándolo, por ejemplo:

$_COOKIE["productos"]["p2"] = "Camisa Naranja";
$COOKIE["Mensaje"] = "Por supuesto que tu favorito es " . $_COOKIE["productos"]["p2"];
echo "<p>" . $COOKIE["Mensaje"] . "</p>";

Lo que resulta en:

Como crear y manejar cookies en PHP - CableNaranja

Pero, como podemos ver. Las cookies no se actualizaran en el navegador. Para poder actualizarlas por completo, hay que declararlas nuevamente con sus nuevos valores.

setcookie("productos[p2]", "Camisa Naranja");
$mensaje = $COOKIE["Mensaje"];
setcookie("Mensaje", $mensaje, time()+3600, "/", "localhost", false, true);
echo "<p>" . $COOKIE["Mensaje"] . "</p>";

Y ahora si como podemos observar, el navegador ha actualizado el valor de las cookies.

Como crear y manejar cookies en PHP - CableNaranja

¡Es tiempo de eliminar las cookies!

No podíamos terminar este artículo, sin mencionar la manera de eliminar las cookies. Por supuesto, la forma más natural es simplemente dejando que cumplan su tiempo de expiración. No obstante, a veces necesitaremos eliminarlas. Para hacer ello, sólo tenemos que establecer su fecha de expiración en negativo. Por ejemplo, eliminemos las tres primeras que hicimos:

setcookie("Sitio", "CableNaranja", time()-2);
setcookie("Autor", "Israel García", time()-60);
setcookie("Slogan", "Orange is Love", strtotime("-2 hours"));

Al ejecutar nuestro código, veremos que ya no están presentes en la lista.

Como crear y manejar cookies en PHP - CableNaranja

¡Y con eso finalizamos este artículo! ¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.

¡Comparte nuestro contenido!

Israel García

Docente, IT Manager, Blogger & Developer. Escribo por diversión, educo por pasión. | Grandstanding is not my thing.

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

shares