Wenn ich ein Cookie entfernen möchte, versuche ich
unset($_COOKIE['hello']);
Ich sehe in meinem Cookie-Browser von Firefox, dass das Cookie noch existiert. Wie kann ich das Cookie wirklich entfernen?
Wenn ich ein Cookie entfernen möchte, versuche ich
unset($_COOKIE['hello']);
Ich sehe in meinem Cookie-Browser von Firefox, dass das Cookie noch existiert. Wie kann ich das Cookie wirklich entfernen?
Wenn Sie das Cookie vollständig aus Ihrer aktuellen Domain löschen möchten, dann wird Ihnen der folgende Code bestimmt helfen.
unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");
Dieser Code löscht die Cookie-Variable vollständig aus all Ihren Domänen, d.h.: " / " - bedeutet, dass der Wert der Cookie-Variable für alle Domänen und nicht nur für die aktuelle Domäne oder den aktuellen Pfad festgelegt wurde. time() - 300 bedeutet, dass der Wert auf eine frühere Zeit festgelegt wurde, so dass er abläuft.
Auf diese Weise wird sie perfekt gelöscht.
Um ein Cookie zu löschen, müssen Sie den Wert einfach auf NULL setzen:
"Wenn Sie ein Cookie mit anderen Werten als den Standardwerten für die Ablaufzeit, den Pfad oder die Domäne gesetzt haben, müssen Sie diese Werte beim Löschen des Cookies erneut angeben, damit das Cookie ordnungsgemäß gelöscht wird." Zitat aus dem Buch "Learning PHP5".
Dieser Code sollte also funktionieren (funktioniert bei mir):
Setzen des Cookies: setcookie('foo', 'bar', time() + 60 * 5);
Löschung des Cookies: setcookie('foo', '', time() + 60 * 5);
Aber mir ist aufgefallen, dass alle das Ablaufdatum auf vorbei setzen, ist das notwendig und warum?
Ich weiß, dass es schon lange her ist, dass dieses Thema erstellt wurde, aber ich habe einen kleinen Fehler in dieser Lösung gesehen (ich kann es so nennen, weil es ein Detail ist). Ich stimme zu, dass die bessere Lösung wahrscheinlich diese Lösung ist:
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
Im vorliegenden Fall jedoch löschen Sie die Cookies in jedem Fall, in dem die Funktion "Zurücksetzen" funktioniert, und erstellen sofort neue, abgelaufene Cookies, falls die Funktion "Zurücksetzen" nicht funktioniert.
Das bedeutet, dass selbst wenn die Funktion zum Zurücksetzen funktioniert, immer noch 2 Cookies auf dem Computer vorhanden sind. Aus logischer Sicht besteht das Ziel darin, die Cookies zu löschen, wenn dies möglich ist, und wenn dies nicht möglich ist, sie verfallen zu lassen, um das "sauberste" Ergebnis zu erzielen.
Ich denke also, dass wir das besser tun sollten:
if (isset($_COOKIE['remember_user'])) {
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
return true;
} else {
return false;
}
Danke und noch einen schönen Tag :)
Setzen Sie einfach das Ablaufdatum auf eine Stunde vor, wenn Sie das Cookie "entfernen" wollen, etwa so:
setcookie ("TestCookie", "", time() - 3600);
または
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
Quelle: http://www.php.net/manual/en/function.setcookie.php
Sie sollten die filter_input()
Funktion für alle Globals, die ein Besucher eingeben/manipulieren kann, etwa so:
$visitors_ip = filter_input(INPUT_COOKIE, 'id');
Mehr darüber können Sie hier lesen: http://www.php.net/manual/en/function.filter-input.php und hier: http://www.w3schools.com/php/func_filter_input.asp
$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.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.