Heim > Backend-Entwicklung > PHP-Problem > So löschen Sie PHP-Cookies

So löschen Sie PHP-Cookies

藏色散人
Freigeben: 2023-03-07 19:36:01
Original
2122 Leute haben es durchsucht

So löschen Sie PHP-Cookies: Erstellen Sie zunächst eine PHP-Beispieldatei. Anschließend werden die erstellten Cookies mit der Methode „setcookie(‘test‘“,time()-3600) gelöscht.

So löschen Sie PHP-Cookies

Empfohlen: „PHP-Video-Tutorial
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 5.6. Diese Methode ist für alle Computermarken geeignet.

PHP löscht COOKIE, PHP kann COOKIE nicht löschen?

COOKIE-Gültigkeitsdauer und COOKIE-Ablauf festlegen

Das PHP-Handbuch erwähnt:

PHP unterstützt transparent HTTP-Cookies. Ein Cookie ist ein Mechanismus, der Daten in einem Remote-Browser speichert, um Benutzer zu verfolgen und zu identifizieren. Cookies können mit den Funktionen setcookie() oder setrawcookie() gesetzt werden. Cookies sind Teil von HTTP-Headern, daher muss die Funktion setcookie() aufgerufen werden, bevor andere Informationen an den Browser ausgegeben werden, ähnlich wie bei den Einschränkungen für die Funktion header().

setcookie():
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
Nach dem Login kopieren

Um ein Cookie zu löschen, müssen Sie sicherstellen, dass sein Ablaufdatum in der Vergangenheit liegt, um den Löschmechanismus des Browsers auszulösen.

Die Möglichkeit, ein Cookie zu löschen, besteht darin, die Gültigkeitsdauer des Cookies auf vor der aktuellen Zeit festzulegen, was fast alle PHP-Programmierer tun.

Zum Beispiel:

setcookie('test','true',time()+3600); //创建cookie
setcookie('test','',time()-3600);   //清除建立的cookie
Nach dem Login kopieren

======================================== ==== ====================================

Wenn Sie direkt Cookie setzen( "test", ' ');

print_r($_COOKIE);
Nach dem Login kopieren

Das Ergebnis ist, dass das gesamte $_COOKIE-Array leer ist, nicht nur $_COOKIE['testcookie']. Also verwende ich Winsock, um das Paket zu erfassen, den zurückgegebenen http-Header zu beobachten und zu finden dass der http-Header tatsächlich

Set-Cookie: testcookie=deleted; expires=Mon, 18-Jun-2007 02:42:33 GMT
Nach dem Login kopieren

ist. Dies zeigt, dass setcookie("testcookie", ''); tatsächlich das Cookie testcookie direkt löscht. Im PHP-Handbuch gibt es überhaupt keine Erklärung.

Schließlich habe ich das gelesen PHP-Quellcode und endlich die Wahrheit herausgefunden (das ist Open Source. Die Vorteile sind großartig, wenn etwas über die Insider-Geschichte unklar ist, überprüfen Sie direkt den Quellcode)

Der folgende Code befindet sich in der Nähe von Zeile 99 von ext/standard/ head.c im Linux-Quellcodepaket von php5.20.

if (value && value_len == 0) {
time_t t = time(NULL) - 31536001;
dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0 TSRMLS_CC);
sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);
efree(dt);
} else {
sprintf(cookie, "Set-Cookie: %s=%s", name, value ? encoded_value : "");
if (expires > 0) {
strcat(cookie, "; expires=");
dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, expires, 0 TSRMLS_CC);
strcat(cookie, dt);
efree(dt);
}
}
Nach dem Login kopieren

In der Quellcodeanzeige ist klar, ob (Wert && value_len == 0), wenn value_len 0 ist

sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);
Nach dem Login kopieren

den HTTP-Header sendet um das Cookie im Browser zu löschen.

Abschließend können wir daraus schließen, dass die Verwendung von

setcookie($cookiename, '');或者 setcookie($cookiename, NULL);
Nach dem Login kopieren

in PHP Cookies löscht, was in diesen Handbüchern natürlich nicht steht.

============================================== == ====================================

php-Cookies können nicht gelöscht/abgelaufen sein?

Heute habe ich mich mit Cookie bei der Website angemeldet, mit

 setcookie("username", "username", time()+1000,"/php100/");
Nach dem Login kopieren

die Anmeldeinformationen des Benutzers gespeichert und mich dann mit

setcookie("username", "", time()-3600);
Nach dem Login kopieren

abgemeldet. Beim Testen unter IE gab es kein Problem. Da Sie eine Website erstellen, müssen Sie mit möglichst vielen Browsern kompatibel sein, haha. Also habe ich es in Firefox getestet und beim Anmelden hat alles gut funktioniert. Aber als ich es gestartet habe, bin ich auf Probleme gestoßen. Es gibt keine Möglichkeit, sich abzumelden, der Benutzer bleibt immer angemeldet. Also habe ich den Unterschied zwischen Cookie-Datensätzen in IE und Firefox überprüft und nach dem Testen wurde mir plötzlich klar, dass es Unterschiede gibt.

Es stellt sich heraus, dass, wenn der vierte Parameter (legaler Pfadparameter) von setcookie() nicht angegeben wird, das aktuelle Verzeichnis standardmäßig als legaler Pfad verwendet wird und der von mir getestete Pfad lautet: http://127.0.0.1 /php/rss2fla/data/log.php, daher sind die beim Anmelden und Abmelden festgelegten Cookie-Pfade unterschiedlich.

IE ist benutzerfreundlicher als Firefox. Bei der Angabe des Pfads wird die Cookie-Variable mit demselben Namen unter der aktuellen IP überschrieben, was zu einer neuen Variablen führt ...

Das obige ist der detaillierte Inhalt vonSo löschen Sie PHP-Cookies. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage