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.

Was ist Cookie?

Dabei steht:

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รคhrend www.sub.cookiedomain.com beschrรคnkt den Cookie-Zugriff auf www.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

Abrufen des Cookie-Werts

Hinweis: Es wurde nur ein leeres Array angezeigt

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

Abrufen des Cookie-Werts

  • Schritt 3 โ€“ Wechseln Sie zurรผck zur ersten Registerkarte 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 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.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: