Respuestas:
Puedes probar esto
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['remember_user']);
setcookie('remember_user', null, -1, '/');
return true;
} else {
return false;
}
unset($_COOKIE['Hello']);
. No cambia nada si lo elimina.
unset($_COOKIE['Hello']);
es realmente importante si puede verificar la cookie en algún lugar más adelante en el código.
Establezca el valor en "" y la fecha de caducidad como ayer (o cualquier fecha anterior)
setcookie("hello", "", time()-3600);
Luego, la cookie caducará la próxima vez que se cargue la página.
Una forma limpia de eliminar una cookie es borrar tanto el $_COOKIE
valor como el archivo de cookies del navegador:
if (isset($_COOKIE['key'])) {
unset($_COOKIE['key']);
setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}
setcookie
llamada:setcookie('key', '', time() - 3600, '/');
unsetting
éxito.
null
valores, deberá usar array_key_exists () , ya que una cookie con un null
valor no será encontrada por un isset()
cheque.
Para eliminar una cookie de manera confiable, no es suficiente configurarla para que caduque en cualquier momento en el pasado, como lo calculó su servidor PHP. Esto se debe a que las computadoras cliente pueden tener, y a menudo tienen, tiempos que difieren de los de su servidor.
La mejor práctica es sobrescribir la cookie actual con una cookie en blanco que caduque un segundo en el futuro después de la época (1 de enero de 1970 00:00:00 UTC), de la siguiente manera:
setcookie("hello", "", 1);
Eso deshabilitará la cookie en su código, pero como la variable $ _COOKIE se actualiza en cada solicitud, volverá a aparecer en la siguiente solicitud de página.
Para deshacerse de la cookie, establezca la fecha de vencimiento en el pasado:
// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);
unset()
la cookie?
Tuve el mismo problema en mi código y descubrí que era un problema de ruta de cookies. Echa un vistazo a esta publicación de desbordamiento de pila: no se puede eliminar la cookie set php
Había configurado la cookie usando un valor de ruta de "/", pero no tenía ningún valor de ruta cuando intenté borrarla, por lo que no se borró. Así que aquí hay un ejemplo de lo que funcionó:
Configuración de la cookie:
$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);
Borrar la cookie:
setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);
Espero que ayude.
Si configuró la cookie para que caduque en el pasado, el navegador la eliminará. Vea el ejemplo de eliminación de setcookie () en php.net
Vea la muestra etiquetada " Ejemplo # 2 setcookie () delete example " de los documentos PHP. Para borrar una cookie del navegador, debe decirle al navegador que la cookie ha caducado ... el navegador la eliminará. unset
como lo ha usado, solo elimina la cookie 'hola' de la matriz COOKIE.
Así es como funciona el código PHP v7 setcookie () cuando lo haces:
<?php
setcookie('user_id','');
setcookie('session','');
?>
Desde la salida de tcpdump mientras olfatea en el puerto 80, el servidor envía al cliente (navegador) los siguientes encabezados HTTP:
Set-Cookie: user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Set-Cookie: session=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Al observar los paquetes en las siguientes solicitudes, el navegador ya no envía estas cookies en los encabezados
Para eliminar la cookie solo necesita establecer el valor en NULL:
"Si ha configurado una cookie con valores no predeterminados para un tiempo de vencimiento, ruta o dominio, debe proporcionar esos mismos valores nuevamente cuando elimine la cookie para que la cookie se elimine correctamente". Cita del libro "Learning PHP5".
Entonces este código debería funcionar (funciona para mí):
Configuración de la cookie:
setcookie('foo', 'bar', time() + 60 * 5);
Eliminar la cookie:
setcookie('foo', '', time() + 60 * 5);
Pero me di cuenta de que todo el mundo está fijando la fecha de vencimiento como pasada, ¿es necesario y por qué?
''
no es lo mismo que null
.
Para eliminar todas las cookies, puede escribir:
foreach ($_COOKIE as $key => $value) {
unset($value);
setcookie($key, '', time() - 3600);
}
Simplemente configure la fecha de vencimiento a una hora atrás, si desea "eliminar" la cookie, de esta manera:
setcookie ("TestCookie", "", time() - 3600);
o
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
Fuente: http://www.php.net/manual/en/function.setcookie.php
Debe usar la filter_input()
función para todos los globales que un visitante puede ingresar / manipular, de esta manera:
$visitors_ip = filter_input(INPUT_COOKIE, 'id');
Puede leer más sobre esto aquí: http://www.php.net/manual/en/function.filter-input.php y aquí: http://www.w3schools.com/php/func_filter_input.asp
Sé que ha pasado mucho tiempo desde que se creó este tema, pero vi un pequeño error en esta solución (puedo llamarlo así, porque es un detalle). Estoy de acuerdo en que la mejor solución es probablemente esta solución:
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
Pero, en el presente caso, elimina las cookies en todos los casos en que funciona la función no establecida e inmediatamente crea nuevas cookies caducadas en caso de que la función no establecida no funcione.
Eso significa que, incluso si la función de desactivación funciona, seguirá teniendo 2 cookies en la computadora. El objetivo solicitado, en un punto de vista lógico, es eliminar las cookies si es posible y si realmente no lo es, hacer que caduque; para obtener el resultado "más limpio".
Entonces, creo que mejor deberíamos hacer:
if (isset($_COOKIE['remember_user'])) {
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
return true;
} else {
return false;
}
Gracias y que tenga un buen día :)
$cookie_name = "my cookie";
$cookie_value = "my value";
$cookie_new_value = "my new value";
// Create a cookie,
setcookie($cookie_name, $cookie_value , time() + (86400 * 30), "/"); //86400 = 24 hours in seconds
// Get value in a cookie,
$cookie_value = $_COOKIE[$cookie_name];
// Update a cookie,
setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), "/");
// Delete a cookie,
setcookie($cookie_name, '' , time() - 3600, "/"); // time() - 3600 means, set the cookie expiration date to the past hour.
Si desea eliminar la cookie por completo de todo su dominio actual, entonces el siguiente código definitivamente lo ayudará.
unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");
Este código eliminará la variable de cookies por completo de todo su dominio, es decir; "/": indica que el valor de la variable de cookie está configurado para todos los dominios, no solo para el dominio o ruta actual. time (): 300 indica que se establece en un tiempo anterior, por lo que caducará.
Así es como se elimina perfectamente.
Puede establecer una variable de sesión basada en valores de cookies
session_start();
if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}
echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");
Simplemente puede usar esta función de personalización:
function unset_cookie($cookie_name) {
if (isset($_COOKIE[$cookie_name])) {
unset($_COOKIE[$cookie_name]);
setcookie($cookie_name, null, -1);
} else { return false; }
}
Si desea eliminar $ _COOKIE ['user_account'].
Solo usa:
unset_cookie('user_account');
Cuando ingresas 0
por tiempo, te refieres a "ahora" (+ 0s desde ahora es en realidad ahora) para el navegador y elimina la cookie.
setcookie("key", NULL, 0, "/");
Lo revisé en el navegador Chrome que me da:
Name: key
Content: Deleted
Created: Sunday, November 18, 2018 at 2:33:14 PM
Expires: Sunday, November 18, 2018 at 2:33:14 PM
Simplemente configure el valor de cookie false
en para desarmarlo,
setcookie('cookiename', false);
PD: - Esa es la forma más fácil de hacerlo.
Debe eliminar las cookies con php en su servidor y también con js para su navegador ... (Se han hecho con php, pero los archivos de cookies también están en el cliente del navegador):
Un ejemplo:
if ($_GET['action'] == 'exit'){
// delete cookies with js and then in server with php:
echo '
<script type="text/javascript">
var delete_cookie = function(name) {
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
};
delete_cookie("madw");
delete_cookie("usdw");
</script>
';
unset($_COOKIE['cookie_name']);
unset($_COOKIE['cookie_time']);
La mayoría de ustedes olvida que esto solo funcionará en una máquina local. En un dominio necesitará un patrón como este ejemplo.
setcookie("example_cookie", 'password', time()-3600, "/", $_SERVER['SERVER_NAME']);
setcookie
funciona para cualquier dominio, localhost o no.
$cookie->delete()
a partir github.com/delight-im/PHP-Cookie útil. El código de la pregunta simplemente elimina la propiedad que se ha analizado en el lado del servidor. La cookie seguirá viva en el lado del cliente.