Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann ich Cookies in PHP nicht löschen? Kurze Analyse der Lösungen

Warum kann ich Cookies in PHP nicht löschen? Kurze Analyse der Lösungen

PHPz
PHPzOriginal
2023-04-21 09:13:55993Durchsuche

Cookies sind ein sehr häufiges Werkzeug bei der Entwicklung von Webanwendungen. Ein Cookie ist eine kleine Datei, die auf dem Computer des Benutzers gespeichert werden kann. Es kann einige Dateninformationen im Zusammenhang mit Webanwendungen speichern, wie z. B. die Präferenzen des Benutzers, den Inhalt des Warenkorbs, den Anmeldestatus usw. In PHP können Entwickler die Funktion setcookie() verwenden, um Cookies zu setzen und an den Browser des Benutzers zu senden. Dieser Vorgang ist einfach, aber das Verwalten und Löschen von Cookies ist manchmal schwieriger. In diesem Artikel werden die Probleme und Lösungen vorgestellt, die beim Löschen von Cookies in PHP auftreten können.

Normalerweise können Cookies, die mit der Funktion setcookie() erstellt wurden, gelöscht werden. Um ein Cookie zu löschen, stellen Sie einfach dessen Ablaufzeit auf die Vergangenheit ein. In PHP können Sie den folgenden Code verwenden, um ein Cookie namens „mycookie“ zu löschen:

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

Im obigen Code ist der zweite Parameter der Funktion setcookie() eine leere Zeichenfolge, die zum Löschen des Werts des Cookies verwendet wird . Der dritte Parameter ist die aktuelle Uhrzeit minus eine Stunde. Das Cookie wird aus dem Browser des Benutzers gelöscht, wenn das Cookie abläuft. In der Praxis kann es jedoch vorkommen, dass das Cookie nicht gelöscht wird, was folgende Gründe haben kann:

  1. Cookie ist abgelaufen

Wenn das Cookie abgelaufen ist, auch wenn die Ablaufzeit auf die vergangene Zeit eingestellt ist , es wird nicht funktionieren. Löschen Sie es aus dem Browser des Benutzers. In PHP können Sie die Funktion isset() verwenden, um zu überprüfen, ob das Cookie abgelaufen ist:

if(isset($_COOKIE['mycookie'])) {
    // Cookie存在
} else {
    // Cookie已经过期或者不存在
}

Wenn die Funktion isset() false zurückgibt, bedeutet dies, dass das Cookie abgelaufen ist oder nicht vorhanden ist. Zu diesem Zeitpunkt müssen Sie dies tun Verwenden Sie die Funktion unset(), um es vom Server zu löschen:

unset($_COOKIE['mycookie']);
  1. Cookie-Domänenname oder -Pfad stimmt nicht überein

Wenn Sie die Funktion setcookie() zum Erstellen eines Cookies verwenden, können Sie den Domänennamen und -pfad des Cookies angeben Cookie, mit dem der Zugriffsbereich des Cookies eingeschränkt werden kann. Wenn der beim Löschen des Cookies angegebene Domänenname oder Pfad nicht mit dem Zeitpunkt der Erstellung des Cookies übereinstimmt, schlägt der Löschvorgang fehl. In PHP können Sie den Domänennamen und den Pfad des Cookies mithilfe des folgenden Codes überprüfen:

echo $_COOKIE['mycookie'];
var_dump(session_get_cookie_params());

Unter anderem kann die Funktion session_get_cookie_params() die Cookie-Parameter der aktuellen Sitzung abrufen, einschließlich Domänenname, Pfad, Ablaufzeit usw Information.

Wenn der angegebene Domänenname und der Pfad beim Erstellen des Cookies nicht übereinstimmen, müssen Sie die Funktion setcookie() verwenden, um den Domänennamen und den Pfad des Cookies zurückzusetzen:

setcookie("mycookie", "", time() - 3600, "/path/", "example.com", 0, true);
  1. Nachdem das Cookie gesendet wurde, wird die Seite wird an eine andere Adresse umgeleitet

Wenn in PHP eine Seite ein Cookie sendet und die Seite nach dem Senden des Cookies an eine andere Adresse umgeleitet wird, wird das Cookie möglicherweise nicht gelöscht. Dies liegt daran, dass PHP beim Senden eines Cookies die Cookie-Informationen im Header der Antwort speichert. Wenn die Seite jedoch umgeleitet wird, wurde der Header der vorherigen Antwort bereits an den Browser gesendet und das Cookie wird dann gesetzt Die Ablaufzeit auf die vergangene Zeit hat keine Auswirkung.

Die Möglichkeit, dieses Problem zu lösen, besteht darin, vor dem Senden des Cookies zu prüfen, ob eine Umleitung erforderlich ist. Wenn ja, senden Sie das Cookie nicht. Sie können die Funktion header() für die Umleitung verwenden:

header("Location: /newpage.php");
exit;

Überprüfen Sie vor der Umleitung, ob das Cookie gesendet werden muss:

if($do_send_cookie) {
    setcookie("mycookie", "myvalue", time()+3600);
}
  1. Cookie-Namenskonflikte zwischen verschiedenen Skripten

In PHP können verschiedene Skripte denselben Cookie-Namen haben Wenn ein Skript ein Cookie mit demselben Namen löscht, sind auch andere Skripte betroffen. Um dieses Problem zu vermeiden, können Sie den Cookies ein Präfix oder Suffix hinzufügen, damit sie eindeutig sind und nicht mit gleichnamigen Cookies aus anderen Skripten in Konflikt geraten.

Zusammenfassung

Das Löschen von Cookies ist ein sehr grundlegender Vorgang in der Webentwicklung und erfordert auch Vorsicht. Wenn Cookies in PHP nicht erfolgreich gelöscht werden, kann dies viele Gründe haben. Die verschiedenen in diesem Artikel vorgestellten Situationen sind nur einige davon. Tatsächlich gibt es viele andere Gründe, warum Cookies nicht gelöscht werden können. Wenn während der Entwicklung ein Problem beim Löschen von Cookies auftritt, müssen Sie das Problem sorgfältig untersuchen und es entsprechend der spezifischen Situation lösen.

Das obige ist der detaillierte Inhalt vonWarum kann ich Cookies in PHP nicht löschen? Kurze Analyse der Lösungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn