PHP-Sitzung und PHP-Cookies mit Beispiel
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 es ausgegeben wurde. Zum Beispiel ein Cookie, das mithilfe der Domain gesetzt wird www.guru99.com kann nicht aus der Domäne 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 verfügen über Optionen zum Deaktivieren von Cookies, Cookies von Drittanbietern oder beidem.
Wenn dies der Fall ist, antwortet PHP mit der Übergabe des Cookie-Tokens in der URL.
Das unten gezeigte Diagramm veranschaulicht, wie Cookies funktionieren.
Hier
1) Ein Benutzer 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 es uns, den Status der Anwendung mithilfe kleiner Dateien zu verfolgen, die auf dem Computer des Benutzers gespeichert werden. Der Pfad, in dem die Cookies gespeichert werden, hängt vom Browser ab. Internet Explorer speichert sie normalerweise im Ordner Temporal Internet Files.
- Personalisierung des Benutzererlebnisses – dies wird erreicht, indem Benutzern die Auswahl ihrer Präferenzen ermöglicht wird. Die nachfolgend angeforderten Seiten werden auf Grundlage der in den Cookies festgelegten Präferenzen personalisiert.
- Verfolgung der 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,
- PHP „setcookie“ ist das PHP-Funktion Wird zum Erstellen des Cookies verwendet.
- „cookie_name“ ist der Name des Cookies, den der Server verwendet, wenn er seinen Wert aus der Array-Variablen $_COOKIE abruft. Es ist obligatorisch.
- „cookie_value“ ist der Wert des Cookies und sein obligatorischer Wert
- „[expiry_time]“ ist optional; Es kann verwendet werden, um die Ablaufzeit für das Cookie festzulegen, z. B. 1 Stunde. Die Zeit wird mithilfe der PHP-Funktionen time() plus oder minus einer Anzahl von Sekunden größer als 0 eingestellt, 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.
- „[Domäne]“ ist optional und kann zum Definieren der Cookie-Zugriffshierarchie verwendet werden, d. h
www.cookiedomain.com
bedeutet gesamte Domäne währendwww.sub.cookiedomain.com
beschränkt den Cookie-Zugriff aufwww.sub.cookiedomain.com
und seine Subdomains. Beachten Sie, dass es möglich ist, eine Subdomain einer Subdomain zu haben, solange die Gesamtzeichenzahl 253 Zeichen nicht überschreitet. - „[secure]“ ist optional, der Standardwert ist false. Es wird verwendet, um zu bestimmen, ob das Cookie über https gesendet wird, wenn es auf „true“ gesetzt ist, oder über http, wenn es auf „false“ gesetzt ist.
- „[Httponly]“ ist optional. Wenn es auf „true“ gesetzt ist, werden nur clientseitige Skriptsprachen, d. h JavaSkript kann nicht darauf zugreifen.
Hinweis: Die PHP-Set-Cookie-Funktion muss vor dem HTML-Öffnungs-Tag ausgeführt werden.
Schauen wir uns nun ein Beispiel an, das Cookies verwendet.
Wir erstellen ein Basisprogramm, das es uns ermöglicht, den Benutzernamen in einem Cookie zu speichern, das nach zehn 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 superglobale Variable.
Es enthält die Namen und Werte aller gesetzten Cookies.
Die Anzahl der Werte, die die
Das $_COOKIE-Array kann enthalten, abhängig von der in php.ini festgelegten Speichergröße.
Der Standardwert ist 1 GB.
Testen unserer Anwendung.
Nehmen wir an, Sie haben Ihre PHP-Dateien im Ordner phptus gespeichert.
- Schritt 1 – Öffnen Sie Ihren Webbrowser und geben Sie die URL ein http://localhost/phptuts/cookies_read.php
Hinweis: Es wurde nur ein leeres Array angezeigt
- Schritt 2 – Navigieren Sie zur URL http://localhost/phptuts/cookies.php
- Schritt 3 – Wechseln Sie zurück zur ersten Registerkarte und klicken Sie dann auf die Schaltfläche „Aktualisieren“.
Warten Sie eine Minute und klicken Sie dann erneut auf die Schaltfläche „Aktualisieren“. Welche Ergebnisse haben Sie erzielt?
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 dem folgenden 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 die URL http://localhost/phptuts/cookie_destroy.php
- Wechseln Sie zur URL http://localhost/phptuts/cookies_read.php Welche 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 Sitzung wird ein Cookie mit der eindeutigen Sitzungs-ID auf dem Computer des Benutzers gespeichert und bei jeder Anforderung an den Server zurückgegeben. Wenn der Client-Browser keine Cookies unterstützt, wird die eindeutige PHP-Sitzungs-ID in der URL angezeigt.
- 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, damit böswillige Benutzer sie nicht manipulieren können.
- Sie möchten Werte von einer Seite an eine andere übergeben.
- Sie möchten die Alternative zu Cookies in Browsern, die keine Cookies unterstützen.
- Sie möchten globale Variablen effizienter und sicherer speichern als sie in der URL zu übergeben
- Sie entwickeln eine Anwendung, beispielsweise einen Warenkorb, der Informationen mit einer Kapazität von mehr als 4 KB vorübergehend speichern muss.
Erstellen einer Sitzung
Um eine Sitzung zu erstellen, müssen Sie zunächst die PHP-Funktion session_start aufrufen und dann 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 Sitzung verwenden.
Der folgende Code zeigt, wie Werte aus Sitzungen erstellt und abgerufen werden
<?php session_start(); //start the PHP_session function 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 gesamten PHP-Sitzungsvariablen zu zerstören.
Wenn Sie nur ein einzelnes Sitzungselement zerstören 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.
Unset gibt nur die einzelnen Sitzungsvariablen frei.
Andere Daten bleiben erhalten.
Zusammenfassung
- Cookies sind kleine Dateien, die auf dem Computer des Benutzers gespeichert werden
- Cookies können nur von der ausstellenden Domain gelesen werden
- Cookies können eine Ablaufzeit haben. Wenn diese nicht festgelegt ist, verfällt das Cookie, wenn der Browser geschlossen wird
- Sitzungen sind wie globale Variablen, die auf dem Server gespeichert sind
- Jede Sitzung erhält eine eindeutige Identifikations-ID, die zum Verfolgen der Variablen für einen Benutzer verwendet wird.
- Sowohl Cookies als auch Sitzungen müssen gestartet werden, bevor HTML-Tags an den Browser gesendet werden.