Suche…
Einführung
Ein HTTP-Cookie ist ein kleines Datenelement, das von einer Website gesendet und vom Webbrowser des Benutzers auf dem Computer des Benutzers gespeichert wird, während der Benutzer browst.
Syntax
bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
Parameter
Parameter | Detail |
---|---|
Name | Der Name des Cookies. Dies ist auch der Schlüssel, den Sie verwenden können, um den Wert aus dem Super Global $_COOKIE . Dies ist der einzige erforderliche Parameter |
Wert | Der Wert, der im Cookie gespeichert werden soll. Diese Daten sind für den Browser zugänglich, speichern Sie also keine sensiblen Daten. |
verfallen | Ein Unix-Zeitstempel, der angibt, wann der Cookie abläuft. Wenn der Wert auf Null gesetzt ist, verfällt das Cookie am Ende der Sitzung. Wenn der Wert unter dem aktuellen Unix-Zeitstempel liegt, verfällt der Cookie sofort. |
Pfad | Der Umfang des Cookies. Bei Einstellung auf / der Cookie in der gesamten Domain verfügbar. Bei Angabe von /some-path/ ist das Cookie nur in diesem Pfad und dessen Nachkommen verfügbar. Der Standardpfad ist der aktuelle Pfad der Datei, in der der Cookie gesetzt wird. |
Domain | Die Domäne oder Unterdomäne, auf der der Cookie verfügbar ist. Wenn die stackoverflow.com Domäne stackoverflow.com ist das Cookie für diese Domäne und alle Unterdomänen verfügbar. Wenn die Subdomain meta.stackoverflow.com ist das Cookie nur für diese Subdomain und alle Sub-Subdomains verfügbar. |
sichern | Wenn der TRUE auf TRUE gesetzt ist, wird das Cookie nur gesetzt, wenn eine sichere HTTPS-Verbindung zwischen dem Client und dem Server besteht. |
httponly | Gibt an, dass das Cookie nur über das HTTP / S-Protokoll verfügbar gemacht werden sollte und für clientseitige Skriptsprachen wie JavaScript nicht verfügbar sein sollte. Nur in PHP 5.2 oder höher verfügbar. |
Bemerkungen
Es ist erwähnenswert, dass das bloße Aufrufen der setcookie
Funktion nicht nur gegebene Daten in das $_COOKIE
_COOKIE-Array legt.
Zum Beispiel hat es keinen Sinn zu tun:
setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value
Der Wert ist noch nicht vorhanden, nicht bis zum Laden der nächsten Seite. Die Funktion setcookie
sagt einfach " bei nächster http-Verbindung den Client (Browser) setcookie
, diesen Cookie zu setzen ". Wenn die Header dann an den Browser gesendet werden, enthalten sie diesen Cookie-Header. Der Browser prüft dann, ob der Cookie noch nicht abgelaufen ist. Wenn nicht, sendet er in http-Anfrage den Cookie an den Server. In diesem $_COOKIE
empfängt PHP ihn und legt den Inhalt im $_COOKIE
Array ab.
Cookie setzen
Ein Cookie wird mit der Funktion setcookie()
. Da Cookies Teil des HTTP-Headers sind, müssen Sie alle Cookies setzen, bevor Sie die Ausgabe an den Browser senden.
Beispiel:
setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params
Beschreibung:
- Erzeugt ein Cookie mit dem Namen
user
- (Optional) Der Wert des Cookies ist
Tom
- (Optional) Das Cookie verfällt nach 1 Tag (86400 Sekunden).
- (Optional) Plätzchen sind in der gesamten Website
/
- (Optional) Cookie wird nur über HTTPS gesendet
- (Optional) Auf Skriptsprachen wie JavaScript kann nicht auf Cookies zugegriffen werden
Auf ein erstelltes oder modifiziertes Cookie kann nur bei nachfolgenden Anforderungen zugegriffen werden (wobei
path
unddomain
übereinstimmen), da der Superglobal-Server$_COOKIE
nicht sofort mit den neuen Daten$_COOKIE
wird.
Ein Cookie abrufen
Rufen Sie einen mit Cookie benannten user
Der Wert eines Cookies kann mit der globalen Variablen $_COOKIE
abgerufen werden. Wenn wir beispielsweise ein Cookie mit dem Namen user
haben, können wir es so abrufen
echo $_COOKIE['user'];
Cookie ändern
Der Wert eines Cookies kann durch Zurücksetzen des Cookies geändert werden
setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already
Cookies sind Teil des HTTP-Headers.
setcookie()
musssetcookie()
aufgerufen werden, bevor eine Ausgabe an den Browser gesendet wird.
setcookie()
beim Ändern eines Cookies sicher, dass derpath
und diedomain
vonsetcookie()
mit dem vorhandenen Cookiesetcookie()
ein neues Cookie erstellt.
Der Wertteil des Cookies wird beim Senden des Cookies automatisch umladecodiert. Wenn er empfangen wird, wird er automatisch dekodiert und einer Variablen mit demselben Namen wie der Cookie-Name zugewiesen
Überprüfen, ob ein Cookie gesetzt ist
Verwenden Sie die Funktion isset()
für die superglobal-Variable $_COOKIE
, um zu prüfen, ob ein Cookie gesetzt ist.
Beispiel:
// PHP <7.0
if (isset($_COOKIE['user'])) {
// true, cookie is set
echo 'User is ' . $_COOKIE['user'];
else {
// false, cookie is not set
echo 'User is not logged in';
}
// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in';
Cookie entfernen
Um ein Cookie zu entfernen, setzen Sie den Ablaufzeitstempel auf einen früheren Zeitpunkt. Dies löst den Entfernungsmechanismus des Browsers aus:
setcookie('user', '', time() - 3600, '/');
setcookie()
Sie beim Löschen eines Cookies sicher, dass derpath
und diedomain
vonsetcookie()
mit dem Cookie übereinstimmen, das Sie löschensetcookie()
, oder dass ein neues Cookie erstellt wird, das sofort abläuft.
Es ist auch eine gute Idee, den $_COOKIE
Wert zu $_COOKIE
, falls die aktuelle Seite ihn verwendet:
unset($_COOKIE['user']);