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

So löschen Sie Cookies in PHP

怪我咯
怪我咯Original
2017-07-13 17:42:26954Durchsuche

In diesem Artikel wird kurz die Methode zum Löschen von Cookies in PHP vorgestellt, bei der es sich um das Festlegen oder Leeren von Cookies handelt. Dies ist ein sehr praktischer Tipp, den ich hier jedem empfehlen kann.

Sehen wir uns zunächst den Mechanismus verwandter Cookies an.

Der Code lautet wie folgt:

bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

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 .

Das folgende Beispiel zeigt, wie das gerade gesetzte Cookie gelöscht wird:

Der Code lautet wie folgt:

<?php
//将过期时间设为一小时前
setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
?>

Die Möglichkeit, ein Cookie zu löschen, besteht darin, die Gültigkeit festzulegen Zeitraum des Cookies auf die aktuelle Zeit zurücksetzen, das ist es, was fast alle PHP-Programmierer tun würden.

Später erzählte mir ein Freund, der neu bei PHP war, dass er den Wert eines Cookies im Programm auf leer setzen wollte, das Cookie jedoch direkt gelöscht wurde. Meine erste Reaktion damals war, dass ich es nicht glaubte, also habe ich
getestet:

Der Code lautet wie folgt:

setcookie("testcookie", &#39;&#39;);
print_r($_COOKIE);

Das Ergebnis ist, dass der gesamte $ _COOKIEarray ist leer, nicht nur $_COOKIE['testcookie']. Also habe ich Winsock zum Erfassen des Pakets verwendet und den zurückgegebenen HTTP-Header beobachtet. Dabei stellte ich fest, dass der HTTP-Header „Set-Cookie: testcookie=deleted; Expires=Mo, 18-Jun-2007“ lautete 02:42:33 GMT". Dies zeigt, dass „setcookie("testcookie", '');" tatsächlich das Cookie testcookie direkt löscht, aber es gibt überhaupt keine Erklärung im php-Handbuch zu dieser Situation .

Endlich den PHP-Quellcode gelesen und endlich die Wahrheit herausgefunden (das ist der Vorteil von Open Source, wenn etwas über die Insider-Geschichte unklar ist, überprüfen Sie einfach den Quellcode direkt).

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

Der Code lautet wie folgt:

if (value && value_len == 0) {
    /* 
     * MSIE doesn&#39;t delete a cookie when you set it to a null value
     * so in order to force cookies to be deleted, even on MSIE, we
     * pick an expiry date 1 year and 1 second in the past
     */
    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);
    }
}

Quellcode Es wird deutlich angezeigt: „if (value && value_len == 0)“. dt );“ sendet den HTTP-Header zum Löschen des Cookies an den Browser.

Abschließend können wir daraus schließen, dass die Verwendung von „setcookie($cookiename, '');“ in PHP Cookies löscht, aber das steht natürlich nicht in diesen Handbüchern.

Ist es nicht ganz einfach? Manchmal müssen wir den PHP-Quellcode trotzdem sorgfältig lesen.

Das obige ist der detaillierte Inhalt vonSo löschen Sie Cookies in PHP. 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