it-swarm.com.de

Entfernen Sie einen Cookie

Wenn ich ein Cookie entfernen möchte, versuche ich es

unset($_COOKIE['hello']);

Ich sehe in meinem Cookie-Browser von Firefox, dass der Cookie noch vorhanden ist. Wie kann ich den Cookie wirklich entfernen?

222
sanders

Sie können dies versuchen

if (isset($_COOKIE['remember_user'])) {
    unset($_COOKIE['Hello']);
    unset($_COOKIE['HelloTest1']);
    setcookie('Hello', null, -1, '/');
    setcookie('HelloTest1', null, -1, '/');
    return true;
} else {
    return false;
}
237
Nikunj K.

Setzen Sie den Wert auf "" und das Verfallsdatum auf gestern (oder ein beliebiges Datum in der Vergangenheit).

setcookie("hello", "", time()-3600);

Der Cookie läuft dann beim nächsten Laden der Seite ab.

259
Re0sless

Ein sauberer Weg zum Löschen eines Cookies besteht darin, sowohl den $_COOKIE-Wert als auch die Browser-Cookie-Datei zu löschen:

if (isset($_COOKIE['key'])) {
    unset($_COOKIE['key']);
    setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}
200
Mouloud

Um ein Cookie zuverlässig zu löschen, reicht es nicht aus, es in der Vergangenheit so einzustellen, dass es vom Server PHP berechnet wird. Dies liegt daran, dass Client-Computer Zeiten haben können, die von denen Ihres Servers abweichen.

Es empfiehlt sich, den aktuellen Cookie mit einem leeren Cookie zu überschreiben, der eine Sekunde abläuft in der Zukunft nach der Epoche (1. Januar 1970 00:00:00 UTC) wie folgt:

setcookie("hello", "", 1);
21
Thejoker123

Dadurch wird das Cookie in Ihrem Code aufgehoben. Da jedoch die $ _COOKIE-Variable bei jeder Anforderung aktualisiert wird, wird sie bei der nächsten Seitenanforderung wieder angezeigt.

Um den Cookie tatsächlich zu entfernen, legen Sie das Ablaufdatum in der Vergangenheit fest:

// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);
18
Eric Petroelje

Ich hatte das gleiche Problem in meinem Code und stellte fest, dass dies ein Problem mit dem Cookie-Pfad war. Check out this stack overflow post: Kann das Cookie nicht löschen

Ich hatte den Cookie mit einem Pfadwert von "/" gesetzt, hatte jedoch keinen Pfadwert, als ich versuchte, ihn zu löschen, also wurde er nicht gelöscht. Hier ist ein Beispiel, was funktioniert hat:

Cookie einstellen:

$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);

Den Cookie löschen:

setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);

Hoffentlich hilft das.

13
user3285097

Wenn Sie das Cookie so einstellen, dass es in der Vergangenheit abläuft, wird es vom Browser entfernt. Siehe setcookie () Beispiel zum Löschen unter php.net

7
Alistair Knock

Siehe das Beispiel " Example # 2 setcookie () delete example " aus den PHP -Dokumenten. Um ein Cookie aus dem Browser zu löschen, müssen Sie dem Browser mitteilen, dass das Cookie abgelaufen ist. Der Browser wird es dann entfernen. unset Wenn Sie es verwendet haben, wird nur der Hallo-Cookie aus dem COOKIE-Array entfernt.

6
Jarret Hardie

So funktioniert PHP v7 setcookie () Code, wenn Sie Folgendes tun:

<?php
    setcookie('user_id','');
    setcookie('session','');
?>

Aus der Ausgabe von tcpdump während des Portierens an Port 80 sendet der Server die folgenden HTTP-Header an den Client (Browser):

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

Beim Beobachten von Paketen in den folgenden Anforderungen sendet der Browser diese Cookies nicht mehr in den Headern

4
Nulik

Um alle Cookies zu entfernen, können Sie schreiben:

foreach ($_COOKIE as $key => $value) {
    unset($value);
    setcookie($key, '', time() - 3600);
}
3
Ralphe Samson

Um ein Cookie zu löschen, müssen Sie nur den Wert auf NULL setzen:

"Wenn Sie ein Cookie mit Nicht-Standardwerten für Ablaufzeit, Pfad oder Domäne festgelegt haben, müssen Sie diese Werte erneut angeben, wenn Sie das Cookie löschen, damit das Cookie ordnungsgemäß gelöscht wird." Zitat aus dem Buch "Learning PHP5".

Also sollte dieser Code funktionieren (funktioniert für mich):

Cookie einstellen: setcookie('foo', 'bar', time() + 60 * 5);

Cookie löschen: setcookie('foo', '', time() + 60 * 5);

Aber mir ist aufgefallen, dass jeder das Verfallsdatum auf vorüber setzt, ist das notwendig und warum? 

3
boksa

Ich weiß, dass dieses Thema schon lange nicht mehr existiert, aber ich habe einen kleinen Fehler in dieser Lösung gesehen (ich kann es so nennen, weil es ein Detail ist) ... Ich bin der Meinung, dass die bessere Lösung wahrscheinlich die folgende ist Lösung:

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 löschen Sie die Cookies jedoch in allen Fällen, in denen die Funktion zum Aufheben der Deaktivierung funktioniert, und erstellen sofort neue abgelaufene Cookies, falls die Funktion zum Aufheben der Deaktivierung nicht funktioniert.

Das bedeutet, dass selbst wenn die Funktion zum Aufheben der Deaktivierung funktioniert, es noch zwei Cookies auf dem Computer gibt .. Das angestrebte Ziel ist es, die Cookies aus logischer Sicht zu löschen, wenn dies möglich ist und wenn nicht wirklich machen es auslaufen; "das sauberste" Ergebnis zu erhalten.

Ich denke, wir sollten es besser machen:

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 einen schönen Tag :)

1
Greg
$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.

Setzen Sie einfach das Ablaufdatum auf eine Stunde zurück, wenn Sie den Cookie wie folgt entfernen möchten:

setcookie ("TestCookie", "", time() - 3600);

oder

setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);

Quelle: http://www.php.net/manual/de/function.setcookie.php

Sie sollten die filter_input()-Funktion für alle Globals verwenden, die ein Besucher eingeben oder bearbeiten kann, wie folgt:

$visitors_ip = filter_input(INPUT_COOKIE, 'id');

Mehr darüber erfahren Sie hier: http://www.php.net/manual/de/function.filter-input.php und hier: http://www.w3schools.com/php/ func_filter_input.asp

1
Jo Smo

Wenn Sie 0 für die Zeit eingeben, meinen Sie "jetzt" für den Browser.

setcookie("key", NULL, 0, "/");

Ich habe es in Chrome Browser überprüft, das gibt mir:

Name: key
Content: Deleted
Created: Sunday, November 18, 2018 at 2:33:14 PM
Expires: Sunday, November 18, 2018 at 2:33:14 PM
0
Amir Forsati

Wenn Sie das Cookie vollständig von Ihrer aktuellen Domain löschen möchten, hilft Ihnen der folgende Code auf jeden Fall.

unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");

Dieser Code löscht die Cookie-Variable vollständig von Ihrer gesamten Domäne. "/" - Der Wert der Cookie-Variablen wird für alle Domänen festgelegt, nicht nur für die aktuelle Domäne oder den aktuellen Pfad. time () - 300 gibt an, dass eine frühere Uhrzeit eingestellt wird, damit sie abläuft.

So wird es perfekt gelöscht.

0
Soumen Pasari

Sie können diese Anpassungsfunktion einfach verwenden:

function unset_cookie($cookie_name) {
    if (isset($_COOKIE[$cookie_name])) {
        unset($_COOKIE[$cookie_name]);
        setcookie($cookie_name, null, -1);
    } else { return false; }
}

Wenn Sie $ _COOKIE ['user_account'] entfernen möchten.
Benutz einfach:

unset_cookie('user_account');
0
Kenny

Es ist einfach!

setcookie("cookiename", "cookievalue", 1);
0
L F

Sie können eine Sitzungsvariable basierend auf Cookie-Werten festlegen

session_start();

if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}

echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");
0
_11one