Was ist der Unterschied zwischen Sitzungen und Cookies in PHP?
Antworten:
Ein Cookie besteht aus Daten, die vom Browser gespeichert und bei jeder Anforderung an den Server gesendet werden.
Eine Sitzung ist eine Sammlung von Daten, die auf dem Server gespeichert und einem bestimmten Benutzer zugeordnet sind (normalerweise über ein Cookie, das einen ID-Code enthält).
Cookies werden verwendet, um Sitzungen zu identifizieren. Besuchen Sie eine Website, die Cookies verwendet, und rufen Sie entweder Chrome Inspect Element und dann Network oder FireBug auf, wenn Sie Firefox verwenden.
Sie können sehen, dass ein Header an einen Server gesendet und auch als Cookie empfangen wurde. Normalerweise enthält es einige persönliche Informationen (wie eine ID), die auf dem Server zum Identifizieren einer Sitzung verwendet werden können. Diese Cookies bleiben auf Ihrem Computer und Ihr Browser sendet sie nur an die damit identifizierten Domains.
Wenn es keine Cookies gäbe, würden Sie bei jeder Anfrage eine eindeutige ID über GET oder POST senden. Cookies sind wie statische IDs, die einige Zeit auf Ihrem Computer verbleiben.
Eine Sitzung ist eine Gruppe von Informationen auf dem Server, die den Cookie-Informationen zugeordnet sind. Wenn Sie PHP verwenden, können Sie den Speicherort von session.save_path überprüfen und tatsächlich "Sitzungen anzeigen". Sie sind entweder Dateien auf dem Server-Dateisystem oder werden in einer Datenbank gesichert.
Der Hauptunterschied zwischen einer Sitzung und einem Cookie besteht darin, dass Sitzungsdaten auf dem Server gespeichert werden, während Cookies Daten im Browser des Besuchers speichern.
Sitzungen sind sicherer als Cookies, da sie auf dem Server gespeichert sind. Cookie kann über den Browser deaktiviert werden.
In Cookies gespeicherte Daten können je nach Lebensdauer des Cookies für Monate oder Jahre gespeichert werden. Die Daten in der Sitzung gehen jedoch verloren, wenn der Webbrowser geschlossen wird.
Eine Sitzung ist ein Datenblock, der auf dem Server verwaltet wird und den Status zwischen HTTP-Anforderungen beibehält. HTTP ist grundsätzlich ein zustandsloses Protokoll. Sitzungen werden verwendet, um es Statefulness zu geben.
Ein Cookie ist ein Ausschnitt von Daten, die an Clients gesendet und von diesen zurückgegeben werden. Cookies werden häufig verwendet, um Sitzungen zu vereinfachen , da sie dem Server mitteilen, welcher Client welche Sitzung verarbeitet hat. Es gibt andere Möglichkeiten, dies zu tun (Magie von Abfragezeichenfolgen usw.), aber Cookies sind wahrscheinlich am häufigsten dafür.
Cookies werden im Browser als Textdateiformat gespeichert. Es speichert eine begrenzte Datenmenge von bis zu 4 KB [4096 Byte]. Ein einzelnes Cookie kann nicht mehrere Werte enthalten, aber ja, wir können mehr als ein Cookie haben.
Cookies sind leicht zugänglich und daher weniger sicher . Die Funktion setcookie () muss VOR dem Tag angezeigt werden .
Sitzungen werden auf der Serverseite gespeichert. Es gibt keine solche Speicherbeschränkung für Sitzungen. Sitzungen können mehrere Variablen enthalten. Da sie nicht leicht zugänglich sind, sind sie sicherer als Cookies.
ist eine kleine Datenmenge, die im Browser gespeichert wird (clientseitig)
kann von PHP mit eingestellt werden setcookie
und wird dann an den Browser des Clients gesendet (HTTP-Antwortheader Set-cookie
)
kann direkt clientseitig in Javascript eingestellt werden: document.cookie = 'foo=bar';
Wenn kein Ablaufdatum festgelegt ist, läuft es standardmäßig ab, wenn der Browser geschlossen wird.
Beispiel: Gehen Sie zu http://example.com , öffnen Sie die Konsole und tun Sie dies document.cookie = 'foo=bar';
. Schließen Sie die Registerkarte, öffnen Sie dieselbe Website erneut, öffnen Sie die Konsole und tun document.cookie
Sie: Sie werden sehen, dass sie foo=bar
noch vorhanden ist. Schließen Sie nun den Browser und öffnen Sie ihn erneut. Besuchen Sie dieselbe Website erneut und öffnen Sie die Konsole. Sie werden sehen, document.cookie
ist leer.
Sie können auch ein genaues Ablaufdatum festlegen, das nicht "beim Schließen des Browsers gelöscht" ist.
Die im Browser gespeicherten Cookies werden in den Headern jeder Anfrage derselben Website an den Server gesendet (siehe Cookie
). Sie können dies beispielsweise bei Chrome anzeigen, indem Sie Entwicklertools> Netzwerk öffnen , auf die Anforderung klicken und unter Kopfzeilen Folgendes anzeigen :
kann clientseitig mit gelesen werden document.cookie
kann serverseitig mit gelesen werden $_COOKIE['foo']
Bonus: Es kann auch mit einer anderen Sprache als PHP eingestellt / abgerufen werden. Beispiel in Python mit "Flasche" -Mikro-Framework ( siehe auch hier ):
from bottle import get, run, request, response
@get('/')
def index():
if request.get_cookie("visited"):
return "Welcome back! Nice to see you again"
else:
response.set_cookie("visited", "yes")
return "Hello there! Nice to meet you"
run(host='localhost', port=8080, debug=True, reloader=True)
sind einige Daten in Bezug auf eine Browsersitzung, die serverseitig gespeichert wurde
Jede serverseitige Sprache kann sie auf andere Weise implementieren
in PHP, wenn session_start();
aufgerufen wird:
jo96fme9ko0f85cdglb3hl6ah6
/var/lib/php5/sess_jo96fme9ko0f85cdglb3hl6ah6
die Session - ID wird in den HTTP - Response - Header an den Client gesendet, der traditionelle Cookie - Mechanismus detailliert oben : Set-Cookie: PHPSESSID=jo96fme9ko0f85cdglb3hl6ah6; path=/
:
(Es kann auch über die URL anstelle des Cookies gesendet werden, jedoch nicht über das Standardverhalten.)
Sie können die Sitzungs-ID auf der Clientseite anzeigen mit document.cookie
:
Das PHPSESSID
Cookie wird ohne Ablaufdatum gesetzt und läuft daher ab, wenn der Browser geschlossen wird. Somit sind "Sitzungen" nicht mehr gültig, wenn der Browser geschlossen / wieder geöffnet wird.
kann in PHP mit eingestellt / gelesen werden $_SESSION
Die Clientseite sieht nicht die Sitzungsdaten, sondern nur die ID: Führen Sie dies aus in index.php
:
<?php
session_start();
$_SESSION["abc"]="def";
?>
Das einzige, was auf der Clientseite angezeigt wird, ist (wie oben erwähnt) die Sitzungs-ID:
Aus diesem Grund ist die Sitzung nützlich, um Daten zu speichern, die vom Client nicht gesehen oder geändert werden sollen
Sie können die Verwendung von Sitzungen vollständig vermeiden, wenn Sie Ihre eigene Datenbank + IDs verwenden und eine ID / ein Token mit einem herkömmlichen Cookie an den Client senden möchten
Die Sitzung wird verwendet, um einen Dialog zwischen Server und Benutzer aufrechtzuerhalten. Es ist sicherer, da es auf dem Server gespeichert ist und wir nicht einfach darauf zugreifen können. Es bettet Cookies in den Benutzercomputer ein. Es speichert unbegrenzt Daten.
Cookies werden auf dem lokalen Computer gespeichert. Grundsätzlich wird die Benutzeridentifikation beibehalten, dh die Besucheraufzeichnung wird verfolgt. Es ist weniger sicher als eine Sitzung. Es speichert eine begrenzte Datenmenge und wird für eine begrenzte Zeit verwaltet.
Ein Teil, der in all diesen Erklärungen fehlt, ist, wie Cookies und Session-By-SessionID-Cookies verknüpft sind. Das Cookie wechselt zwischen Client und Server hin und her. Der Server verknüpft den Benutzer (und seine Sitzung) anhand des Sitzungs-ID-Teils des Cookies. Sie können die Sitzungs-ID auch per URL senden (nicht die beste Vorgehensweise) - falls Cookies vom Client deaktiviert werden.
Habe ich das richtig verstanden?