27 - Borrado de una cookie
Para borrar una cookie se debe llamar a la función setcookie con una fecha anterior a la actual.
También tengamos en cuenta que una cookie tiene una fecha de expiración por lo que si un visitante reingresa a nuestro sitio y la cookie expiró el navegador no la enviará.
Haremos un algoritmo muy común a muchos sitios que administran webmail. Recordaremos en una cookie el mail ingresado por el operador, el código fuente de la primera página es la siguiente:
<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina2.php" method="post">
Ingrese su mail:
<input type="text" name="mailusuario" value="<?php if (isset($_COOKIE['mail'])) echo $_COOKIE['mail']; ?>">
<br>
<input type="radio" name="opcion" value="recordar">
Recordar en esta computadora el mail ingresado.
<br>
<input type="radio" name="opcion" value="norecordar">
No recordar.
<br>
<input type="submit" value="confirmar">
</form>
</body>
</html>
Es decir, disponemos un control text y como valor de la misma verificamos si el cliente tiene ya una cookie guardada en su máquina, en caso afirmativo la mostramos dentro del text modificando la propiedad value.
Mediante dos controles de tipo radio daremos la posibilidad al cliente que el navegador recuerde o no el mail ingresado.
Como es sabido, la primera vez que accedamos a la página no existe la cookie llamada mail.
La segunda página:
<?php
if ($_REQUEST['opcion'] == "recordar")
setcookie("mail", $_REQUEST['mailusuario'], time() + (60 * 60 * 24 * 365), "/");
elseif ($_REQUEST['opcion'] == "norecordar")
setcookie("mail", "", time() - 1000, "/");
?>
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
if ($_REQUEST['opcion'] == "recordar")
echo "cookie creada";
elseif ($_REQUEST['opcion'] == "norecordar")
echo "cookie eliminada";
?>
<br>
<a href="pagina1.php">Ir a la otra página</a>
</body>
</html>
En esta página verificamos cuál control radio está seleccionado, si es el primero, creamos la cookie mail con una vida de 1 año:
setcookie("mail",$_REQUEST['mailusuario'],time()+(60*60*24*365),"/");
En caso que esté seleccionado el segundo radio, creamos la misma cookie pero con una fecha de caducidad inferior a la actual (con esto estamos virtualmente eliminando la cookie):
setcookie("mail","",time()-1000,"/");