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: