Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Cómo borrar Cookies con PHP

Vicente Herrera
Cómo borrar Cookies con PHP
El reproductor de video será cargado en breves instantes.

El uso de cookies es práctico para marcar y diferenciar a los usuarios, y para almacenar del lado del cliente información de personalización de la experiencia de usuario de manera sencilla.

Para ello en PHP contamos con el array global $_COOKIE y el método setcookie() .

$_COOKIE nos permite leer todas las cookies que el navegador tiene almacenadas asociadas al dominio desde el que está recibiendo la página. En cada carga de página, el navegador volverá a enviar toda la información de los datos almacenados en las cookies. Igualmente el navegador se asegurará (si tiene algún bug) de que no nos envía cookies de otros dominios.

Hay que tener en cuenta que al insertar un frame o script desde otro sitio en nuestra página (por ejemplo publicitario, o un botón de me gusta de facebook), éste está recibiendo sus propias cookies de su dominio, diferentes de las nuestras. Pero también puede por javascript analizar el contenido HTML del documento principal, por lo que sí es un elemento muy omnipresente, puede monitorizar la información de los usuarios entre multitud de páginas.

También hay que tener en cuenta que desde el ordenador del usuario es muy fácil leer todas las cookies del navegador, con todos los valores asociados a las mismas, por lo que no es una herramienta adecuada para guardar información sensible como contraseñas.

Con setcookie() podemos no solamente asociar un par clave => valor para ser almacenado, sino especificar si el ámbito de aplicación es un subdominio concreto de la página que se está visitando, o la fecha de caducidad de esta información. Pasa dicha fecha, el navegador debería automáticamente borrar la cookie.

Una forma de forzar el borrado de una cookie antes del tiempo de caducidad que se estableció originalmente, es establecer de nuevo una caducidad, con una fecha del pasado. De esta manera, el navegador la eliminará directamente.

Nótese que todo esto no aplica a las cookies de sesión, que se lee y establecen mediante $_SESSION . En este caso, la cookie del navegador solo almacena un identificador, que el servidor PHP asocia a unos datos que están en éste y no en el navegador (por lo que la información almacenada en principio es accesible solo desde el servidor). Este tipo de cookie se elimina automáticamente al cerrar totalmente el navegador (todas las pestañas), o al utilizar desde PHP unset() sobre la variable de la cookie de sesión.

<?php
 
echo "<h1>Ejemplo cookies</h1>";

if ( ! empty($_GET['borranombre'])) {
	setcookie('nombre','',time()-100);
	echo 'Cookie borrada<br>';
}

$nombre = '';
if ( empty($_COOKIE['nombre'])) {
	if ( empty($_GET['nombre'])) {
		echo '<form action="'.$_SERVER['PHP_SELF'].'" method="get">';
		echo 'Nombre: <input type="text" name="nombre" /><br>';
		echo '<input type="submit" value="enviar" /><br>';
		echo "</form>";
	} else {
		setcookie('nombre',$_GET['nombre'],time()+3600);
		$nombre = $_GET['nombre'];
		
	}
} else {
	$nombre = $_COOKIE['nombre'];
}
echo "Hola ".$nombre."<br>";
//var_dump( $_COOKIE );
echo "<br>";
echo '<a href="'.$_SERVER['PHP_SELF'].'?borranombre=1">Borrar cookie</a>';
<?php
session_start();
echo "<h1>Ejemplo sesión</h1>";

if ( ! empty($_GET['borranombre'])) {
	unset($_SESSION['nombre']);
	echo 'Cookie borrada<br>';
}

$nombre = '';
if ( empty($_SESSION['nombre'])) {
	if ( empty($_GET['nombre'])) {
		echo '<form action="'.$_SERVER['PHP_SELF'].'" method="get">';
		echo 'Nombre: <input type="text" name="nombre" /><br>';
		echo '<input type="submit" value="enviar" /><br>';
		echo "</form>";
	} else {
		$_SESSION['nombre'] = $_GET['nombre'];
		$nombre = $_GET['nombre'];
	}
} else {
	$nombre = $_SESSION['nombre'];
}
echo "Hola ".$nombre."<br>";
// if (isset($_SESSION) ) var_dump( $_SESSION );
echo "<br>";
echo '<a href="'.$_SERVER['PHP_SELF'].'?borranombre=1">Borrar sesión</a>';

Como nota adicional, como el valor de las cookies se envía en la cabecera de la conexión HTTP, cuando enviamos con setcookie() la caducidad para borrar la cookie, durante esa misma ejecución de la página todavía tenemos en memoria el valor. Será en la siguiente carga cuando dejemos de recibir el valor de esa cookie. Con unset() y $_SESSION sin embargo, lo que hacemos es borrar la variable del lado del servidor, por lo que el cambio tiene efecto inmediato.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Cómo conectar base de datos y listar resultados con PHP

Cómo conectar base de datos y listar resultados con PHP

Lenguajes de programación

22 de Marzo de 2016

Utilizar PHP para conectar con una base de datos nos permite tener un almacenamiento seguro en el que centralizar la información que nuestro código empleará para componer lo que se debe visualizar ...

Aprende PHP desde Cero

Aprende PHP desde Cero

Lenguajes de programación

21 de Septiembre de 2015

Este próximo jueves 24 de Septiembre comenzaremos el curso de PHP desde Cero, donde podrás disfrutar de más de 12 horas de clases con nuestro experto Vicente Herrera.

PHP Developer

PHP Developer

carrera

Incluye 5 cursos:

  • Curso Online de Laravel 5
  • Curso de Symfony 3
  • Curso de SQL desde Cero

y 2 cursos más!

Duración: 17 horas y 20 minutos

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars