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:
unset($_COOKIE['my_cookie']);
Y la segunda manera es:
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.
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.
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
Gracias, en pocas lineas me explicaste todo.
Mi unsetcookie casero xD
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!