[Pregunta]: ¿Como eliminar una cookie en específico?

Iniciado por Leguim, 3 Abril 2020, 20:40 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Buenos días,

estaba investigando sobre como podía eliminar una cookie con PHP y según lo que he visto hay dos maneras que me confunden un poco. Hay como un debate de que es mejor y que no, otros que dicen que se puede complementar y ya me terminan confundiendo.

La primer manera que se dice es:
Código (php) [Seleccionar]

unset($_COOKIE['my_cookie']);


Y la segunda manera es:
Código (php) [Seleccionar]

setcookie('my_cookie'); // con este método se elimina la cookie


No se bien cual es mejor hacer, o si es así como se dice que hay que complementarlas pero siendo así cual conviene escribir primero en el código?


Mod: Temas sobre PHP van al subforo de PHP.

#!drvy

Hola,

Las cookies no se eliminan como tal sino que se marcan como expiradas para que el navegador las elimine. Dicho esto, lo ideal es hacer las 2 cosas y de manera clara y limpia.

Código (php) [Seleccionar]
if (isset($_COOKIE['my_cookie'])) {
   unset($_COOKIE['my_cookie']);
   setcookie('my_cookie', '', time() - 3600, '/');
}


Con unset te aseguras que el resto del código que se tenga que ejecutar no va a interpretar el valor de la cookie. Con un setcookie en negativo (en este caso 1 hora menos que la actual), le estas diciendo al navegador que esta cookie ha expirado y que debe eliminarla. La eliminación de la cookie por parte del navegador puede NO ser instantánea, por ello también se la pasa un valor vació (segundo argumento) a fin de evitar retomar el valor antiguo.


Saludos

Leguim

Gracias, en pocas lineas me explicaste todo.

Mi unsetcookie casero xD

Código (php) [Seleccionar]

if(!function_exists('unsetcookie'))
{
function unsetcookie($name)
{
if(is_string($name))
{
if(isset($_COOKIE[$name]))
{
unset($_COOKIE[$name]);
setcookie($name, '', time() - 3600, '/');
}
}
}
}


Creo que ahí quedó bien...

Gracias!