PHP-Sitzung und PHP-Cookies mit Beispiel

โšก Intelligente Zusammenfassung

Cookies und Sessions in PHP sichern den Zustand รผber das zustandslose HTTP-Protokoll hinweg, speichern Daten aber auf unterschiedliche Weise. Diese Anleitung erklรคrt, wie Cookies kleine Dateien auf dem Client speichern, wie Sessions Daten auf dem Server verwalten und wie man sie mit funktionierendem Code erstellt, liest und lรถscht.

  • ๐Ÿช Was sind Cookies? Ein Cookie ist eine kleine Datei, bis zu 4 KB groรŸ, die der Server auf dem Client speichert und die bei jeder spรคteren Anfrage zurรผckgesendet wird.
  • ๐Ÿ—„๏ธ Was sind Sitzungen? Eine Session speichert Daten auf dem Server unter einer eindeutigen ID, die im $_SESSION-Array gespeichert und รผber einen Session-Cookie referenziert wird.
  • ๐Ÿ†š Hauptunterschied: Cookies befinden sich auf dem Client und eignen sich fรผr kleine, unkritische Daten; Sessions befinden sich auf dem Server und speichern grรถรŸere oder private Daten.
  • ๏ธ Kekse herstellen: setcookie() legt vor der HTML-Ausgabe einen Namen, einen Wert und optional die Flags expy, path, domain, secure und httponly fest.
  • ๐Ÿ“ Sitzungen erstellen: session_start() startet eine Sitzung, nach der Sie Werte รผber das Superglobal-Array $_SESSION lesen und schreiben kรถnnen.
  • ๐Ÿ—‘๏ธ Aufrรคumen: Ein Cookie kann durch Setzen einer vergangenen Zeit ablaufen gelassen werden; eine Sitzung kann mit session_destroy() beendet oder ein Wert mit unset() gelรถscht werden.
  • ๐Ÿค– KI-Assistent: KI-Tools kรถnnen eine sichere Sitzungsverwaltung implementieren und Schwachstellen in Cookies oder Sitzungen im bestehenden PHP-Code aufdecken.

PHP-Cookies und -Sitzungen

Was ist Cookie?

Ein Cookie ist eine kleine Datei mit einer maximalen GrรถรŸe von 4 KB, die der Webserver auf dem Client-Computer speichert.

Sobald ein Cookie gesetzt wurde, geben alle folgenden Seitenanfragen den Cookie-Namen und -Wert zurรผck.

Ein Cookie kann nur von der Domain gelesen werden, von der er ausgestellt wurde. Beispielsweise kann ein Cookie, der mit der Domain www.guru99.com gesetzt wurde, nicht von der Domain www.guru99.com gelesen werden. karriere.guru99.com.

Die meisten Websites im Internet enthalten Elemente aus anderen Bereichen, beispielsweise Werbung. Die Domรคnen, die diese Elemente bereitstellen, kรถnnen auch ihre eigenen Cookies setzen. Diese Cookies werden als Drittanbieter-Cookies bezeichnet.

Ein von einem Benutzer erstelltes Cookie kann nur fรผr ihn sichtbar sein. Andere Benutzer kรถnnen seinen Wert nicht sehen.

Die meisten Webbrowser bieten Optionen zum Deaktivieren von Cookies, Cookies von Drittanbietern oder beidem.

In diesem Fall antwortet PHP, indem es das Cookie-Token รผbergibt. URL.

Das unten gezeigte Diagramm veranschaulicht, wie Cookies funktionieren.

Was ist Cookie?

Dabei steht:

1) Ein Nutzer fordert eine Seite an, die Cookies speichert

2) Der Server setzt das Cookie auf dem Computer des Benutzers

3) Andere Seitenanfragen des Benutzers geben den Cookie-Namen und -Wert zurรผck

Warum und wann werden Cookies verwendet?

  • HTTP ist ein zustandsloses Protokoll; Cookies ermรถglichen uns tracDer Status der Anwendung wird mithilfe kleiner Dateien, die auf dem Computer des Benutzers gespeichert werden, รผberwacht. Der Speicherort der Cookies ist browserabhรคngig. Internet Explorer speichert sie รผblicherweise im Ordner โ€žTemporรคre Internetdateienโ€œ.
  • Die Personalisierung des Nutzererlebnisses wird dadurch erreicht, dass Nutzer ihre Prรคferenzen auswรคhlen kรถnnen. Die nachfolgenden Seitenaufrufe werden basierend auf den in den Cookies gespeicherten Prรคferenzen personalisiert.
  • Tracking die von einem Benutzer besuchten Seiten

Cookies erstellen

Schauen wir uns nun die grundlegende Syntax an, die zum Erstellen eines Cookies verwendet wird.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

HIER,

  • โ€žsetcookieโ€œ ist der PHP-Funktion Wird zum Erstellen des Cookies verwendet.
  • โ€žcookie_nameโ€œ ist der Name des Cookies, den der Server verwendet, um seinen Wert aus der Array-Variablen $_COOKIE abzurufen. Er ist obligatorisch.
  • โ€žcookie_valueโ€œ ist der Wert des Cookies und muss angegeben werden.
  • โ€ž[expiry_time]โ€œ ist optional; damit kann die Gรผltigkeitsdauer des Cookies festgelegt werden, z. B. 1 Stunde. Die Zeit wird mit der PHP-Funktion time() plus oder minus einer Anzahl von Sekunden grรถรŸer als 0 berechnet, z. B. time() + 3600 fรผr 1 Stunde.
  • โ€ž[cookie_path]โ€œ ist optional; Es kann verwendet werden, um den Cookie-Pfad auf dem Server festzulegen. Der Schrรคgstrich โ€ž/โ€œ bedeutet, dass das Cookie auf der gesamten Domain verfรผgbar gemacht wird. Unterverzeichnisse beschrรคnken den Cookie-Zugriff auf die Subdomain.
  • โ€ž[domain]โ€œ ist optional; es kann verwendet werden, um die Cookie-Zugriffshierarchie zu definieren, d.h. www.cookiedomain.com bedeutet die gesamte Domรคne, wรคhrend www.sub.cookiedomain.com beschrรคnkt den Cookie-Zugriff auf www.sub.cookiedomain.com und seine Subdomains.
  • Die Angabe โ€ž[secure]โ€œ ist optional; der Standardwert ist โ€žfalseโ€œ. Sie bestimmt, ob der Cookie รผber HTTPS (bei โ€žtrueโ€œ) oder HTTP (bei โ€žfalseโ€œ) gesendet wird.
  • โ€ž[httponly]โ€œ ist optional. Wenn es auf โ€žtrueโ€œ gesetzt ist, werden clientseitige Skriptsprachen wie z. B. JavaSkript Ich kann nicht auf den Cookie zugreifen.

Hinweis: Die PHP-Funktion setcookie muss vor dem รถffnenden HTML-Tag ausgefรผhrt werden.

Betrachten wir nun ein Beispiel, das Cookies verwendet.

Wir werden ein einfaches Programm erstellen, das es uns ermรถglicht, den Benutzernamen in einem Cookie zu speichern, der nach sechzig Sekunden ablรคuft.

Der folgende Code zeigt die Implementierung des obigen Beispiels โ€žcookies.phpโ€œ.

<?php
setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
echo 'the cookie has been set for 60 seconds';
?>

Ausgang:

the cookie has been set for 60 seconds

Abrufen des Cookie-Werts

Erstellen Sie eine weitere Datei namens โ€žcookies_read.phpโ€œ mit dem folgenden Code.

<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>

Ausgang:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Hinweis: $_COOKIE ist eine in PHP integrierte Superglobalvariable. Sie enthรคlt die Namen und Werte aller gesetzten Cookies.

Die Anzahl und GrรถรŸe der Cookies ist durch den Browser begrenzt, typischerweise etwa 50 Cookies pro Domain und 4 KB pro Cookie.

Testen unserer Anwendung. Nehmen wir an, Sie haben Ihre PHP-Dateien in einem phptuts-Ordner gespeichert.

  • Schritt 1 โ€“ ร–ffnen Sie Ihren Webbrowser und geben Sie Folgendes ein: URL http://localhost/phptuts/cookies_read.php

Abrufen des Cookie-Werts

Hinweis: Es wurde nur ein leeres Array angezeigt

  • Schritt 2 โ€“ Navigieren Sie zu URL http://localhost/phptuts/cookies.php

Abrufen des Cookie-Werts

  • Schritt 3 โ€“ Wechseln Sie zurรผck zum ersten Tab und klicken Sie dann auf die Schaltflรคche โ€žAktualisierenโ€œ.

Abrufen des Cookie-Werts

Warten Sie eine Minute und klicken Sie dann erneut auf die Schaltflรคche โ€žAktualisierenโ€œ. Welche Ergebnisse haben Sie erhalten?

Cookies lรถschen

  • Wenn Sie ein Cookie vor seiner Ablaufzeit vernichten mรถchten, stellen Sie die Ablaufzeit auf einen bereits verstrichenen Zeitpunkt ein.
  • Erstellen Sie eine neue Datei namens cookie_destroy.php mit folgendem Code
<?php

setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Wiederholen Sie die Schritte 1 bis 3 aus dem obigen Abschnitt zum Abrufen von Cookie-Werten.
  • ร–ffnen Sie den Microsoft Store auf Ihrem Windows-PC URL http://localhost/phptuts/cookie_destroy.php
  • Wechseln Sie auf die URL http://localhost/phptuts/cookies_read.phpWelche Ergebnisse werden angezeigt?

Was ist eine Sitzung?

  • Eine Sitzung ist eine globale Variable, die auf dem Server gespeichert ist.
  • Jeder Sitzung wird eine eindeutige ID zugewiesen, die zum Abrufen gespeicherter Werte verwendet wird.
  • Bei jeder Sitzungserstellung wird ein Cookie mit der eindeutigen Sitzungs-ID auf dem Computer des Benutzers gespeichert und mit jeder Anfrage an den Server zurรผckgesendet. Falls der Client-Browser keine Cookies unterstรผtzt, wird die eindeutige PHP-Sitzungs-ID in der Adressleiste angezeigt. URL.
  • Im Vergleich zu Cookies kรถnnen Sitzungen relativ groรŸe Datenmengen speichern.
  • Die Sitzungswerte werden beim SchlieรŸen des Browsers automatisch gelรถscht. Wenn Sie die Werte dauerhaft speichern mรถchten, sollten Sie diese in der Datenbank speichern.
  • Genau wie die Array-Variable $_COOKIE werden Sitzungsvariablen in der Array-Variable $_SESSION gespeichert. Genau wie bei Cookies muss die Sitzung vor allen HTML-Tags gestartet werden.

Warum und wann sollten Sitzungen verwendet werden?

  • Sie mรถchten wichtige Informationen wie die Benutzer-ID sicherer auf dem Server speichern, wo bรถswillige Benutzer sie nicht manipulieren kรถnnen.
  • Sie mรถchten Werte von einer Seite an eine andere รผbergeben.
  • Sie mรถchten eine Alternative zu Cookies in Browsern, die keine Cookies unterstรผtzen.
  • Sie mรถchten globale Variablen effizienter und sicherer speichern, als sie direkt zu รผbergeben. URL.
  • Du entwickelst dichping eine Anwendung wie beispielsweise ein Shopping Warenkorb, der vorรผbergehend Informationen mit einer Kapazitรคt von mehr als 4 KB speichern muss.

Erstellen einer Sitzung

Um eine Session zu erstellen, mรผssen Sie zuerst die PHP-Funktion session_start aufrufen und anschlieรŸend Ihre Werte in der Array-Variablen $_SESSION speichern.

Nehmen wir an, wir mรถchten wissen, wie oft eine Seite geladen wurde. Dazu kรถnnen wir eine Session verwenden.

Der folgende Code zeigt, wie man Werte aus Sitzungen erstellt und abruft.

<?php

session_start(); // start the session

if(isset($_SESSION['page_count']))
{
$_SESSION['page_count'] += 1;
}
else
{
$_SESSION['page_count'] = 1;
}
echo 'You are visitor number ' . $_SESSION['page_count'];

?>

Ausgang:

You are visitor number 1

Sitzungsvariablen zerstรถren

Die Funktion session_destroy() wird verwendet, um die gesamte PHP-Session zu zerstรถren.

Wenn Sie nur ein einzelnes Sitzungselement lรถschen mรถchten, verwenden Sie die Funktion unset().

Der folgende Code veranschaulicht die Verwendung beider Methoden.

<?php

session_destroy(); // destroy entire session

?>
<?php

unset($_SESSION['product']); // destroy product session item

?>

session_destroy entfernt alle Sitzungsdaten, einschlieรŸlich der mit der Sitzung verbundenen Cookies.

Das Aufheben der Einstellung gibt lediglich die einzelnen Sitzungsvariablen frei. Andere Daten bleiben erhalten.

Hรคufig gestellte Fragen

Cookies speichern Daten in einer kleinen Datei im Browser des Nutzers und werden bei jeder Anfrage รผbertragen. Sitzungen speichern Daten auf dem Server und senden lediglich einen Sitzungs-Cookie. Sitzungen sind sicherer fรผr sensible oder grรถรŸere Datenmengen.

StandardmรครŸig speichert PHP Sitzungsdaten als Dateien im Pfad, der in der php.ini-Datei durch session.save_path festgelegt ist, hรคufig im temporรคren Systemverzeichnis. Websites mit hohem Datenverkehr verwenden oft eine Datenbank, Redis oder Memcached als Speicherort.

Setzen Sie das HttpOnly-Flag, JavaDas Skript kann weder den Cookie lesen, noch das Secure-Flag, sodass die รœbertragung ausschlieรŸlich รผber HTTPS erfolgt, und das SameSite-Attribut, um den seitenรผbergreifenden Datenverkehr einzuschrรคnken. Fรผr Sitzungen wird die ID nach dem Login neu generiert.

Ja. KI kann einen Anmeldevorgang generieren, der die Sitzungs-ID neu generiert, sichere Cookie-Flags setzt, minimale Daten serverseitig speichert und Timeouts erzwingt. RevPrรผfen Sie das Ergebnis anhand Ihrer Sicherheitsanforderungen.

Ja. KI kann fehlende HttpOnly- oder Secure-Flags, Risiken der Sitzungsfixierung, das Speichern sensibler Daten in Cookies und das Ausbleiben der ID-Generierung nach dem Login erkennen und anschlieรŸend den korrigierten Code vorschlagen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: