1)Phänomene: HTTP-Protokoll ist ein zustandsloses Protokoll und kann vom Webserver selbst nicht erkannt werden Welche Anfragen von demselben Browser ausgegeben werden, jede Anfrage des Browsers ist vollständig isoliert.
2) Lösung: Mit dem Sitzungsstatus kann der Webserver eine Reihe von Anfragen und Antwortprozessen zuordnen, die zu derselben Sitzung gehören.
3) Implementierung: erfordert, dass der Browser jede von ihm gesendete Anforderungsnachricht identifiziert. Diese Identifikation wird Sitzungs-ID (SessionID) genannt.
1: Es gibt zwei Arten von Cookies:
1> Sitzungscookie (Sitzungscookie)
Wenn keine Ablaufzeit festgelegt ist, bedeutet dies, dass der Lebenszyklus dieses Cookies während der Browsersitzung beträgt Das Browserfenster wird geschlossen, das Cookie verschwindet.
Die Lebensdauer ist die Browsersitzung.
Im Allgemeinen wird es nicht auf der Festplatte, sondern im Speicher gespeichert.
2> Dauerhafte Cookies (persistente Cookies)
Wenn die Ablaufzeit festgelegt ist, speichert der Browser die Cookies auf der Festplatte. Nach dem Schließen und erneuten Öffnen des Browsers bleiben diese Cookies bestehen gültig sein, bis das Ablaufdatum abläuft.
Es wird auf der Festplatte des Benutzers gespeichert und kann mit demselben Browser abgerufen werden.
2: Sitzungsbezogenes Wissen
2.1: Was ist eine Sitzung?
Sitzung ist ein Mechanismus zum Speichern von Kontextinformationen. Der Wert der Variablen wird auf der Serverseite anhand der Sitzungs-ID unterschieden.
2.2: Funktionsweise einer Sitzung
Client————>1.request————————->server
2. session_start( ) ;
|<————-3.reponse(SESSION_ID)<——–|
|————->4.request(SESSION_ID)—— — >|
5. session_start();
|<————-6.reponse(SESSION_ID)<————|
|— ————->7. request(SESSION_ID + logout)–>|
8. session_destroy();
|<————-9. Antwort(löschen Cookie-Datei)<——-|
Der Client öffnet die Webseite und stellt eine Anfrage an den Server. Da keine entsprechende Cookie-Datei vorhanden ist Client, es wird nicht in der Anfrage gesendet. Nach dem Empfang der Anfrage des Clients beginnt der Server mit der Verarbeitung der Sitzung, indem er die Funktion session_start() ausführt. Überprüfen Sie zunächst, ob die Anfrage eine SESSION_ID enthält Wenn nicht, geben Sie eine neue SESSION_ID aus. Wenn ja, rufen Sie die Datei mit der SESSION_ID auf, schreiben Sie die Informationen in $_SESSION und speichern Sie sie in der Datei, beginnend mit sess_.
Senden Sie den $_SESSION-Parameter der geschriebenen Informationen an den Client zurück. Nachdem der Client die vom Server gesendeten Informationen erhalten hat, speichert er die Informationen im Cookie.
Der Client schreibt die SESSION_ID im Cookie in den Header und sendet erneut eine Anfrage an den Server. Wiederholen Sie die Vorgänge 1-3.
Der Client gibt eine Abmeldeanforderung aus.
Nachdem der Server die Anforderung akzeptiert hat, beginnt er mit dem Löschen der Sitzungsdatei, indem er die Funktion session_destroy() ausführt.
Die Der Server gibt einen Löschbefehl für die auf dem Client gespeicherte Cookie-Datei an den Client aus: setcookie(session_name(), ”, time()-60, '/');
2.3: Hinweis
Normalerweise kann es nicht fensterübergreifend verwendet werden, aber die Sitzungs-ID wird in einem dauerhaften Cookie gespeichert und dann aus einem neuen Fenster gelesen, um die Sitzungs-ID zu erhalten und eine fensterübergreifende Verwendung zu erreichen.
Auf Websites Bei großen Seitenaufrufen ist die Sitzung nicht sicher und es kann vorkommen, dass die Sitzungs-ID nicht aus der Cookie-Datei auf der Festplatte abgerufen wird. Wenn Sie Ihre Sitzungs-ID auf dem Client wissen möchten, können Sie dies tun Lesen Sie es nur über Javascript. >
2.4 PHP-Nutzung und -Einstellungen Session_start(): Starten Sie eine Sitzung oder kehren Sie zu einer bestehenden Sitzung zurück, bevor Sie Session_start verwenden (), andernfalls ist der folgende Fehler aufgetreten. Sie können session.auto_start=1 in php.ini aktivieren, sodass Sie session_start() nicht jedes Mal aufrufen müssen, wenn Sie die Sitzung verwenden.Wenn session.auto_start=1, wird session_save_path (‘./t/’) ungültig. Denn die letztgenannte Aussage muss an erster Stelle stehen.
2.5 Erhöhen Sie die Sitzungsspeicher- und -verarbeitungsfunktionen von PHP
;session.save_path = „N;MODE;/path“ Mit dieser Einstellung können wir Sitzungen speichern. Das Verzeichnis führt mehrere Aktionen aus -Level-Hashing, wobei „N“ die festzulegende Verzeichnisebene darstellt,
„MODE“ das Berechtigungsattribut des Verzeichnisses darstellt, der Standardwert ist 600
2.6 :Mehrere Server teilen PHP-SITZUNG
1. Die NFS- oder Samba-Freigabemethode ermöglicht die gemeinsame Nutzung der Festplatten, auf denen Sitzungsdateien auf jedem Server gespeichert sind. Diese Methode ist einfach und machbar.
2. Zentralisierte Speicherung in der Datenbank. Die Sitzungsfunktion wird über die von PHP bereitgestellte Funktion neu definiert.
3: Cookie-Wissen
Was ist Cookie? Wie funktioniert es? Ein Cookie ist eine kleine Textinformation, die zusammen mit Benutzeranfragen und Seiten zwischen einem Webserver und einem Browser übertragen wird. Die im Cookie enthaltenen Informationen können von der Webanwendung bei jedem Besuch der Website gelesen werden. Grundlagen der Funktionsweise von Cookies Wenn ein Benutzer zu einer Seite der Website zurückkehrt und die URL www.*****.com eingibt, sucht der Browser auf seiner lokalen Festplatte nach einem mit dieser URL verknüpften Cookie. Wenn das Cookie vorhanden ist, sendet der Browser es mit der Seitenanforderung an Ihre Website. Wofür werden Cookies verwendet? Der grundlegendste Zweck ist: Cookies können Websites dabei helfen, Informationen über Besucher zu speichern. Allgemeiner gesagt sind Cookies eine Möglichkeit, die Kontinuität von Webanwendungen aufrechtzuerhalten (d. h. eine „Statusverwaltung“ durchzuführen), damit sich die Website an Sie erinnert.
1 Der Client führt das Programm aus und fordert dies vom Server auf Senden Sie eine Anfrage zurück. Als Ergebnis wird ein Cookie für den Client generiert, sodass das Cookie beim zweiten Aktualisieren angezeigt wird
2. Die Sitzung wird im Speicher gespeichert und das Sitzungscookie existiert gleichzeitig mit Der Prozess wird ausgeführt, aber zu diesem Zeitpunkt speichert der Server noch Die Sitzungsdatei muss die Zeit zum Löschen der Sitzungsdatei festlegen
3. Cookie speichert einige Informationen in der lokalen Cookie-Datei und die Cookie-Datei speichert Schlüssel-Wert-Paare. Cookie-Dateien werden in den Verzeichnissen „Dokument“ und „Einstellungen/Benutzername“ auf der Systemfestplatte Ihres lokalen Computers gespeichert. Wenn der Name der Website, die Sie besuchen, www.abc.com ist, lautet der Name der Cookie-Datei im Allgemeinen benutzername@abc.com. Sie können den Ordner öffnen und einen Blick darauf werfen. Der von Ihnen erwähnte getName ruft den Schlüsselwert eines in der Cookie-Datei gespeicherten Cookies ab.
Wir wissen, dass Sitzung eine Methode zum Verwalten von Benutzersitzungsdaten auf der Serverseite ist und das entsprechende Cookie dazu dient, Benutzerdaten auf der Clientseite zu verwalten. Das HTTP-Protokoll ist ein zustandsloses Protokoll. Nachdem der Server antwortet, verliert er den Kontakt zum Browser. Frühestens hat Netscape Cookies in den Browser eingeführt, damit Daten seitenübergreifend vom Client ausgetauscht werden können vieler Benutzer? Was ist mit den Daten?
Zunächst müssen Client und Server einzeln kontaktiert werden. Jeder Client muss über eine eindeutige Kennung verfügen, damit der Server ihn identifizieren kann. Es wird empfohlen, zwei Methoden zur eindeutigen Identifizierung zu verwenden: Cookie oder Angabe über GET. Die Standardkonfiguration von PHP erstellt bei Verwendung einer Sitzung ein Cookie mit dem Namen „PHPSESSID“ (kann durch Ändern des Werts „session.name“ in php.ini angegeben werden). Wenn der Client Cookies deaktiviert, können Sie auch angeben, dass die Sitzungs-ID an übergeben werden soll über GET. Server (Parameter wie session.use_trans_sid in php.ini ändern).
Wenn wir uns das serverseitige Verzeichnis session.save_path ansehen, finden wir viele Dateien, die sess_vv9lpgf0nmkurgvkba1vbvj915 ähneln. Dies sind tatsächlich die Daten, die der Sitzungs-ID „vv9lpgf0nmkurgvkba1vbvj915“ entsprechen an den Server, und der Server verwendet die Sitzungs-ID. Suchen Sie die entsprechende Datei, deserialisieren Sie den Dateiinhalt beim Lesen und rufen Sie den Sitzungswert ab. Serialisieren Sie ihn zuerst und schreiben Sie ihn dann 🎜>
1. Konzept
Wenn es bereits vorhanden ist, rufen Sie es ab und verwenden Sie es,
Andernfalls erstellen Sie eine Sitzung für diesen Client, generieren Sie eine dieser Sitzung zugeordnete Sitzungs-ID und übergeben Sie sie mithilfe der Set-Cookie-Methode an die Anfrage. Anschließend wird die nächste Anfrage verwendet. Diese Sitzungs-ID wird als Wert im Cookie mit dem Namen „JESESSIONID“ übergeben.
4) Speichermethode: Am häufigsten wird das Speichern mit Cookies verwendet. Aber wenn Cokkie deaktiviert ist, muss es einen anderen Mechanismus zur Erhaltung geben. Zum Beispiel beim Umschreiben von URLs: Hängen Sie die Sitzungs-ID an das Ende des URL-Pfads an.
5) Hinweis: Da es normalerweise mit Cookies gespeichert wird, können Sie es auch nach einem Neustart des Browsers erhalten, wenn Sie das Cookie dauerhaft machen.
//用持久化cookie保存sessionIDCookie cookie = new Cookie("JESESSIONID",session.getId()); cookie.setMaxAge(20); response.addCookie(cookie);
1) Sitzungsattribut :
Wenn das auf der Seite angegebene Sitzungsattribut standardmäßig „true“ ist, handelt es sich um den ersten Zugriff auf eine JSP Wenn Sie eine WEB-Anwendungsseite verwenden möchten, muss der Seite ein Sitzungsobjekt zugeordnet sein, das dieser Anforderung zugeordnet ist.
Andernfalls erfordert die JSP-Seite nicht, dass der aktuellen JSP-Seite ein Sitzungsobjekt zugeordnet sein muss, sodass beim Öffnen der JSP keine Sitzung erstellt wird Seite wird zum ersten Mal aufgerufen.
2) request.getSession(boolean flag):
< 🎜true, ein HttpSession-Objekt wird auf jeden Fall zurückgegeben. Wenn der aktuellen JSP-Seite bereits ein HttpSession-Objekt zugeordnet ist, geben Sie es direkt zurück. Wenn nicht, erstellen Sie ein neues.
false, wenn der aktuellen JSP-Seite kein HttpSession-Objekt zugeordnet ist, wird null zurückgegeben, andernfalls wird das erhaltene HttpSession-Objekt zurückgegeben.
request.getSession() entspricht request.getSession(true).
1) Rufen Sie HttpSession invalidate auf ()-Methode.
2) Die HttpSession wird nach der Ablaufzeit automatisch zerstört. Sie können die maximale Sitzungsalterung in der web.xml-Datei von Tomcat konfigurieren.
<!-- apache-tomcat-x.x.xx\conf\web.xml --><session-config><session-timeout>30</session-timeout></session-config></p> <p> </p> <p><span style="color: #000000"><em>相关方法签名:</em></span></p> <ul class=" list-paddingleft-2"> <li><p><span style="color: #000000">int getMaxInactiveInterval() //返回最大时效,单位:秒</span></p></li> <li><p><span style="color: #000000">void setMaxInactiveInterval(int interval) //设置最大时效</span></p></li> </ul> <p><span style="color: #000000">3)服务器卸载当前 WEB 应用。</span></p> <p> </p> <h2><span style="color: #000000">4.Session相关方法</span></h2> <p><span style="color: #000000">String getId() //得到sessionID</span></p> <p><span style="color: #000000">boolean isNew() //该session是不是新创建的<br></span></p> <p><span style="color: #000000">long getCreationTime() //该session被创建的时间<br></span></p> <p><span style="color: #000000">long getLastAccessedTime() //该session最后一次被访问的时间</span></p> <p><span style="color: #000000">void <span style="color: #ff0000">setAttribute</span>(String key, Object value) //存放值,相当于哈希表<br></span></p> <p><span style="color: #000000">Object <span style="color: #ff0000">getAttrbute</span>(String key) //根据键从session中取得对应的值</span></p> <p> </p> <h2><span style="color: #000000">5.URL重写实现Session跟踪</span></h2> <p><span style="color: #000000"><em>方法签名:</em>String encodeURL(String url) //该方法会在URL后面加上sessionID</span></p> <div class="cnblogs_code"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">重新登录
重新登录
Das obige ist der detaillierte Inhalt vonErläuterung der Sitzungen und Sitzungszustände von Cookies und Sitzungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!