Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist das Prinzip der PHP-Sitzungssteuerung?

Was ist das Prinzip der PHP-Sitzungssteuerung?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-08-28 13:43:323001Durchsuche

Was ist das Prinzip der PHP-Sitzungssteuerung?

Was ist Sitzungskontrolle?

Cookies und Sitzungen sind technische Mittel, um den gesamten Sitzungsprozess zu verfolgen. Eine Sitzung ist ein Anruf zwischen dem Benutzer und dem Server über den Browser.

Warum brauchen wir eine Sitzungskontrolle?

Da das HTTP-Protokoll zustandslos ist, weiß der Server nicht, was der Benutzer das letzte Mal getan hat, was die Implementierung interaktiver Webanwendungen ernsthaft behindert. HTTP verwendet keine zusätzlichen Mittel. Der Server weiß nicht, was der Benutzer getan hat. Dazu sind Cookies und Sitzungen erforderlich. Der Server kann die im Cookie enthaltenen Informationen setzen oder lesen, um den Status der Sitzung des Benutzers mit dem Server aufrechtzuerhalten.

Was ist der Unterschied zwischen Sitzung und Cookie?

Speicherort, Datenschutzrichtlinie und Sicherheit, Datentyp, Gültigkeitsdauer, Serverdruck, Browserunterstützung, domänenübergreifende Unterstützung, Datenvolumen.

(1) Das Cookie befindet sich auf der Clientseite und die Sitzung befindet sich auf der Serverseite

(2) Das Cookie ist lokal und kann nach Belieben geändert werden, und die Sitzung ist länger sicher

(3) Cookie unterstützt nur ASCII-String, muss dekodiert werden. Session unterstützt alle Datentypen.

(4) Cookies werden lokal gespeichert und können dauerhaft gültig sein. Die Sitzung befindet sich auf dem Server. Nachdem die Einstellung dauerhaft gültig ist, sammeln sich die Sitzungen auf dem Server weiter an, was zu einem Speicherüberlauf führt.

(5) Die Sitzung wird innerhalb eines bestimmten Zeitraums auf dem Server gespeichert. Wenn die Besuche zunehmen, wird die Leistung Ihres Servers stärker beansprucht. Wenn Sie hauptsächlich eine Reduzierung der Serverleistung in Betracht ziehen, sollten Sie Cookies verwenden.

(6) Cookie benötigt Browserunterstützung, Sitzung unterstützt sie nicht.

(7) Cookie unterstützt domänenübergreifend, die Sitzung unterstützt jedoch nicht domänenübergreifend.

(8) Die Speicherkapazität ist unterschiedlich.

Verwandte Empfehlungen: "PHP-Tutorial"

1. Unterschiede in den Datentypen

Cookies können nur ASCII-Zeichenfolgen speichern, wenn der Zugriff Unicode-Zeichen erfordert oder binäre Daten müssen zuerst kodiert werden. Cookies können nicht direkt auf Java-Objekte zugreifen. Um etwas komplexere Informationen zu speichern, ist die Verwendung von Cookies schwieriger.

Sitzung kann auf alle Arten von Daten zugreifen, einschließlich, aber nicht beschränkt auf, Zeichenfolgen, Ganzzahlen, Listen, Karten usw. Java Beans oder sogar beliebige Java-Klassen, Objekte usw. können ebenfalls direkt in der Sitzung gespeichert werden, was sehr praktisch ist. Session kann als Java-Containerklasse betrachtet werden.

2. Unterschiede in den Datenschutzrichtlinien

Cookies werden im Client-Reader gespeichert und sind für den Client sichtbar. Einige Programme auf dem Client können den Inhalt des Cookies ausspionieren, kopieren oder sogar ändern. Die Sitzung wird auf dem Server gespeichert und ist für den Client transparent, sodass kein Risiko besteht, dass vertrauliche Informationen verloren gehen.

Wenn Sie sich für Cookies entscheiden, ist es besser, zu versuchen, sensible Informationen wie Kontokennwörter nicht in Cookies zu schreiben. Es ist am besten, die Cookie-Informationen wie bei Google und Baidu zu verschlüsseln und sie dann nach der Übermittlung an den Server zu entschlüsseln, um sicherzustellen, dass nur die Person die Informationen im Cookie lesen kann. Wenn Sie sich für „Session“ entscheiden, ist es viel einfacher, es auf dem Server zu platzieren und die Privatsphäre in „Session“ effektiv zu schützen.

3. Unterschied in der Gültigkeitsdauer

Jeder, der Google verwendet hat, weiß, dass Ihre Google-Anmeldeinformationen lange gültig sind, wenn Sie sich bei Google angemeldet haben. Nutzer müssen sich nicht bei jedem Besuch erneut anmelden, da Google die Anmeldedaten des Nutzers dauerhaft speichert. Um diesen Effekt zu erzielen, wäre die Verwendung von Cookies die bessere Wahl. Setzen Sie einfach das Ablaufzeitattribut des Cookies auf eine sehr, sehr große Zahl.

Da die Sitzung auf einem Cookie namens JSESSIONID basiert und die Standardablaufzeit des Cookies JSESSIONID -1 beträgt, wird die Sitzung ungültig, solange der Browser geschlossen ist, sodass die Sitzung nicht den Effekt einer dauerhaften Gültigkeit erzielen kann der Informationen. Dies kann nicht durch URL-Rewriting erreicht werden. Und wenn das Sitzungs-Timeout zu lang eingestellt ist, kann es umso leichter zu einem Speicherüberlauf kommen, je mehr Sitzungen sich auf dem Server ansammeln.

4. Unterschiede im Serverdruck

Sitzung wird auf der Serverseite gespeichert und jeder Benutzer generiert eine Sitzung. Wenn viele Benutzer gleichzeitig darauf zugreifen, werden viele Sitzungen generiert, die viel Speicher verbrauchen. Daher ist es unwahrscheinlich, dass Websites mit extrem vielen gleichzeitigen Besuchen wie Google, Baidu und Sina Session zum Verfolgen von Benutzersitzungen verwenden.

Das Cookie wird auf der Clientseite gespeichert und belegt keine Serverressourcen. Wenn viele Benutzer gleichzeitig lesen, ist Cookie eine gute Wahl. Für Google, Baidu und Sina ist Cookie möglicherweise die einzige Wahl.

5. Unterschiede in der Browserunterstützung

Cookies müssen vom Client-Browser unterstützt werden. Wenn der Client Cookies deaktiviert oder keine Cookies unterstützt, ist die Sitzungsverfolgung ungültig. Bei Anwendungen auf WAP sind reguläre Cookies nutzlos.

Wenn der Client-Browser keine Cookies unterstützt, müssen Sitzungs- und URL-Adressumschreibung verwendet werden. Es ist zu beachten, dass alle URLs, die das Sitzungsprogramm verwenden, neu geschrieben werden müssen, da sonst die Sitzungsverfolgung ungültig wird. Für WAP-Anwendungen ist das Umschreiben von Sitzungs- und URL-Adressen möglicherweise die einzige Option.

Wenn der Client Cookies unterstützt, kann das Cookie so eingestellt werden, dass es in diesem Browserfenster und Unterfenstern gültig ist (stellen Sie die Ablaufzeit auf –1 ein), oder es kann so eingestellt werden, dass es in allen Browserfenstern gültig ist (stellen Sie Folgendes ein). Ablaufzeit auf eine ganze Zahl größer als 0 setzen). Die Sitzung kann jedoch nur innerhalb dieses Lesefensters und seiner Unterfenster gültig sein. Wenn zwei Browserfenster unabhängig voneinander sind, verwenden sie zwei unterschiedliche Sitzungen. (Sitzung bezieht sich auf verschiedene Fenster unter IE8)

6. Unterschiede in der domänenübergreifenden Unterstützung

Cookie unterstützt beispielsweise den domänenübergreifenden Zugriff .com“, dann „Alle Domainnamen mit dem Suffix „.biaodianfu.com“ können auf dieses Cookie zugreifen. Im Internet werden mittlerweile häufig domänenübergreifende Cookies verwendet, beispielsweise bei Google, Baidu, Sina usw. Die Sitzung unterstützt keinen domänenübergreifenden Namenszugriff. Die Sitzung ist nur innerhalb des Domänennamens gültig, in dem sie sich befindet.

Nur ​​die Verwendung von Cookies oder nur die Verwendung von Session erzielt möglicherweise nicht den gewünschten Effekt. Zu diesem Zeitpunkt sollten Sie versuchen, Cookie und Session gleichzeitig zu verwenden. Die Kombination von Cookie und Session wird in praktischen Projekten viele unerwartete Effekte erzielen.

7. Die Menge der gespeicherten Daten ist unterschiedlich.

Die von einem einzelnen Cookie gespeicherten Daten dürfen 4 KB nicht überschreiten, und viele Browser beschränken eine Website auf die Speicherung von bis zu 20 Cookies.

Was sind die Nutzungsszenarien von Sitzung und Cookie?

Speichern Sie wichtige Informationen wie Anmeldeinformationen als SITZUNG. Wenn andere Informationen gespeichert werden müssen, können diese in COOKIE abgelegt werden.

Wie funktionieren Cookies?

1. Cookies werden in zwei Arten unterteilt

(1) Permanente Cookies, die in Form von Dateien auf der Festplatte gespeichert werden ([Passwort merken] und [Automatische Anmeldung]) Funktionen der Website sind dauerhafte Cookies)

(2) Temporäre Cookies, die Speicher im Browser belegen

2. Cookies verwenden eine Lösung, die den Status auf dem Client beibehält, was eine Art Sitzung ist Zustand auf dem Client. Dabei handelt es sich um einen kleinen Textabschnitt, der vom Server auf dem lokalen Computer oder um eine Dateneinheit im Speicher gespeichert und bei jeder Anfrage an denselben Server gesendet wird.

Wie Cookies funktionieren:

Wie Cookies funktionieren, was eine grundlegende Grundlage des HTTP-Protokolls erfordert.

Cookies wurden erstmals in RFC2109 beschrieben (veraltet, ersetzt durch RFC2965). Jeder Client kann bis zu 300 Cookies speichern, und jeder Domainname kann bis zu 20 Cookies speichern (tatsächlich gibt es in den meisten Browsern mittlerweile mehr als). Dies (z. B. Firefox ist 50) und die Größe jedes Cookies beträgt bis zu 4 KB, aber verschiedene Browser haben ihre eigenen Implementierungen. Bei der Verwendung von Cookies ist es am wichtigsten, die Größe der Cookies zu kontrollieren, keine unnötigen Informationen abzulegen und nicht zu viele Informationen abzulegen.

Unabhängig von der verwendeten Servertechnologie wird davon ausgegangen, dass der Server das Setzen eines Cookies erfordert, solange die zurückgesendete HTTP-Antwort einen Header in der folgenden Form enthält:

Set-cookie:name=name;expires=date;path=path;domain=domain

Browser, die Als Reaktion darauf wird eine Cookie-Datei erstellt und gespeichert (es kann sich auch um ein Speicher-Cookie handeln). Bei jeder zukünftigen Anfrage des Benutzers muss der Browser feststellen, ob eines der aktuellen Cookies abgelaufen ist basierend auf dem Ablaufattribut) und stimmen mit dem überein. Die Cookie-Informationen des Pfadattributs, falls vorhanden, werden dem Anforderungsheader hinzugefügt und in der folgenden Form an den Server zurückgesendet:

Cookie: name="zj"; Path="/linkage"

Das dynamische Skript auf dem Der Server wird es analysieren und entsprechend behandeln. Natürlich können Sie es auch direkt ignorieren.

Cookie-Mechanismus Cookies sind kleine Textstücke, die vom Server auf dem lokalen Computer gespeichert und bei jeder Anfrage an denselben Server gesendet werden. IETF RFC 2965 HTTP State Management Mechanism ist eine allgemeine Cookie-Spezifikation. Der Webserver sendet Cookies mithilfe von HTTP-Headern an den Client. Auf dem Client-Terminal analysiert der Browser diese Cookies und speichert sie in einer lokalen Datei. Er bindet diese Cookies automatisch an jede Anfrage an denselben Server.

Konkret übernimmt der Cookie-Mechanismus eine Lösung, die den Zustand auf der Clientseite aufrechterhält. Es handelt sich um einen Speichermechanismus für den Sitzungsstatus auf der Benutzerseite. Der Benutzer muss die Cookie-Unterstützung auf der Clientseite aktivieren. Die Rolle von Cookies besteht darin, die zustandslosen Mängel des HTTP-Protokolls zu beheben.

Die orthodoxe Cookie-Verteilung wird durch die Erweiterung des HTTP-Protokolls erreicht. Der Server fügt dem HTTP-Antwortheader eine spezielle Befehlszeile hinzu, um den Browser aufzufordern, das entsprechende Cookie gemäß den Anweisungen zu generieren. Allerdings können auch reine clientseitige Skripte wie JavaScript Cookies erzeugen. Die Verwendung von Cookies wird nach bestimmten Grundsätzen vom Browser automatisch im Hintergrund an den Server gesendet. Der Browser überprüft alle gespeicherten Cookies. Wenn der deklarierte Bereich eines Cookies größer oder gleich dem Speicherort der anzufordernden Ressource ist, wird das Cookie an den HTTP-Anforderungsheader der angeforderten Ressource angehängt und an den Server gesendet.

Der Inhalt des Cookies umfasst hauptsächlich: Name, Wert, Ablaufzeit, Pfad und Domäne. Der Pfad und die Domäne bilden zusammen den Geltungsbereich des Cookies. Wenn die Ablaufzeit nicht festgelegt ist, bedeutet dies, dass die Lebensdauer dieses Cookies während der Browsersitzung beträgt. Wenn das Browserfenster geschlossen wird, verschwindet das Cookie. Diese Art von Cookie, das für die Dauer der Browsersitzung bestehen bleibt, wird als Sitzungscookie bezeichnet. Sitzungscookies werden im Allgemeinen nicht auf der Festplatte, sondern im Speicher gespeichert. Dieses Verhalten ist in der Spezifikation natürlich nicht festgelegt. Wenn eine Ablaufzeit eingestellt ist, speichert der Browser die Cookies auf der Festplatte. Wenn Sie den Browser schließen und erneut öffnen, bleiben diese Cookies weiterhin gültig, bis die eingestellte Ablaufzeit überschritten ist. Auf der Festplatte gespeicherte Cookies können von verschiedenen Browserprozessen gemeinsam genutzt werden, beispielsweise von zwei IE-Fenstern. Verschiedene Browser haben unterschiedliche Möglichkeiten, im Speicher gespeicherte Cookies zu verarbeiten.

Der Sitzungsmechanismus verwendet eine Lösung, die den Status auf der Serverseite verwaltet. Gleichzeitig haben wir auch gesehen, dass der Sitzungsmechanismus möglicherweise den Cookie-Mechanismus verwenden muss, um den Zweck der Speicherung der Identität zu erreichen, da die Lösung zur Aufrechterhaltung des Status auf der Serverseite auch eine Identität auf der Clientseite speichern muss. Session bietet eine bequeme Möglichkeit, globale Variablen zu verwalten.

Sitzung wird für jeden Benutzer gespeichert. Eine Sitzungs-ID wird verwendet, um zu unterscheiden, um welche Benutzersitzungsvariable es sich handelt. Dieser Wert wird beim Zugriff an den Server zurückgegeben. Wenn der Client Cookies deaktiviert, kann dieser Wert auch so eingestellt werden, dass er per get an den Server zurückgegeben wird.

In Bezug auf die Sicherheit: Wenn Sie eine Site besuchen, die Sitzungen verwendet, und ein Cookie auf Ihrem Computer erstellen, wird empfohlen, dass der Sitzungsmechanismus auf der Serverseite sicherer ist, da er die gespeicherten Daten des Clients nicht willkürlich liest . Information.

Wie läuft die Sitzung ab?

(1) Standardmäßig werden alle Benutzerinformationen auf der Festplatte des Servers gespeichert. Sie können Memcache jedoch verwenden, um diese Daten im Speicher abzulegen.

(2) Wenn der Client eine Anfrage an den Server sendet und den Server auffordert, eine Sitzung zu generieren, prüft der Server zunächst, ob im Cookie des Clients eine Sitzungs-ID vorhanden ist und ob diese abgelaufen ist. Wenn eine solche Sitzungs-ID vorhanden ist, ruft der Server die Sitzung des Servers basierend auf der Sitzungs-ID im Cookie ab. Wenn es keine solche session_id gibt, erstellt der Server eine neu. PHPSESSID ist eine verschlüsselte Zeichenfolge, deren Generierung nach bestimmten Regeln erfolgt. Wenn derselbe Client session_start zweimal startet, ist die session_id unterschiedlich.

(3) Da die Lösung zur Aufrechterhaltung des Status auf der Serverseite auch eine Identität auf der Clientseite speichern muss, verwendet der Sitzungsmechanismus den Cookie-Mechanismus, um den Zweck der Speicherung der Identität zu erreichen

(4) Sitzungsgenerierung Die Sitzungs-ID wird im Cookie platziert. Wenn der Benutzer das Cookie deaktiviert, wird die Sitzung dann unbrauchbar? Nach dem Deaktivieren von Cookies kann die Sitzung natürlich verwendet werden, die Sitzungs-ID kann jedoch auch auf andere Weise abgerufen werden. Sie kann beispielsweise am Ende der URL gerootet oder in Form eines Formulars an den Server übermittelt werden. Dadurch kann der Server den Status des Clients verstehen.

Schauen wir uns noch einmal das Sitzungsprinzip an:

(1) Generieren Sie eine global eindeutige Kennung (Session-ID);

(2) Eröffnen Sie Datenspeicherplatz. Im Allgemeinen wird die entsprechende Datenstruktur im Speicher erstellt. In diesem Fall gehen jedoch alle Sitzungsdaten verloren, sobald das System ausgeschaltet ist. Wenn es sich um eine E-Commerce-Website handelt, hat ein solcher Unfall schwerwiegende Folgen. Es kann jedoch auch in eine Datei geschrieben oder sogar in einer Datenbank gespeichert werden. Dies erhöht zwar den E/A-Aufwand, die Sitzung kann jedoch ein gewisses Maß an Persistenz erreichen und ist für die Sitzungsfreigabe günstiger. 3) Senden Sie die global eindeutige Kennung der Sitzung an den Client.

Sitzungsmechanismus

Der Sitzungsmechanismus ist ein serverseitiger Mechanismus. Der Server verwendet zum Speichern eine Struktur ähnlich einer Hash-Tabelle (oder verwendet möglicherweise eine Hash-Tabelle). Information.

Wenn das Programm eine Sitzung für die Anfrage eines Clients erstellen muss, prüft der Server zunächst, ob die Anfrage des Clients bereits eine Sitzungskennung (sogenannte Sitzungs-ID) enthält. Wenn dies der Fall ist, bedeutet dies, dass sie bereits erstellt wurde . Dieser Client hat eine Sitzung erstellt und der Server ruft die Sitzung basierend auf der Sitzungs-ID ab und verwendet sie (wenn sie nicht abgerufen werden kann, erstellt er eine neue Sitzung). Für den Client wird eine Sitzung erstellt und die mit der Sitzung verknüpfte Sitzungs-ID sollte eine Zeichenfolge sein, die weder wiederholt noch leicht zu fälschen ist werden in dieser Antwort zur Speicherung an den Client zurückgegeben.

Cookie kann verwendet werden, um diese Sitzungs-ID zu speichern, sodass der Browser während des Interaktionsprozesses diese Identifikation automatisch gemäß den Regeln dem Server anzeigen kann. Im Allgemeinen ähnelt der Name dieses Cookies SEEESIONID. Cookies können jedoch künstlich deaktiviert werden, und es müssen andere Mechanismen vorhanden sein, um die Sitzungs-ID trotzdem an den Server zurückzugeben, wenn Cookies deaktiviert sind.

Eine häufig verwendete Technik ist das sogenannte URL-Rewriting, bei dem die Sitzungs-ID direkt an das Ende des URL-Pfads angehängt wird. Es gibt auch eine Technik namens Form Hidden Fields. Das heißt, der Server ändert das Formular automatisch und fügt ein ausgeblendetes Feld hinzu, sodass die Sitzungs-ID beim Absenden des Formulars an den Server zurückgegeben werden kann.

Sowohl Cookie als auch Session können eine Sitzungsverfolgung durchführen, die Prinzipien der Vervollständigung sind jedoch unterschiedlich. Unter normalen Umständen können beide die Anforderungen erfüllen, aber manchmal kann Cookie nicht verwendet werden und manchmal kann Session nicht verwendet werden. Das Folgende ist ein Vergleich der Merkmale und anwendbaren Situationen der beiden.

Das obige ist der detaillierte Inhalt vonWas ist das Prinzip der PHP-Sitzungssteuerung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn