Detailliertes Verständnis der Sitzung
1. Was ist Sitzung?
Die offizielle Definition von Sitzung lautet: Sitzung: In Computern, insbesondere in Netzwerkanwendungen, wird dies als „Sitzungssteuerung“ bezeichnet. Das Session-Objekt speichert die Eigenschaften und Konfigurationsinformationen, die für eine bestimmte Benutzersitzung erforderlich sind.
Um es ganz klar auszudrücken: Sitzung ist eine Datenspeichertechnologie, die die Serverseite warten kann. Die Sitzung weist hauptsächlich die folgenden Merkmale auf:
1. Die Sitzung wird auf der Serverseite gespeichert
2. Die Sitzung wird im Allgemeinen mit Cookies verwendet. Wenn der Browser die Cookie-Funktion deaktiviert hat, bedeutet dies, dass Sie können URL-Rewriting nur verwenden, um die Sitzungsspeicherfunktion zu implementieren
3. Wenn Sie die Sitzung lediglich zur Aufrechterhaltung des Benutzerstatus verwenden, dann, wenn eine große Anzahl von Benutzern gleichzeitig angemeldet ist oder dort sind viele Die Anzahl der Sitzungen verursacht das Problem einer langsamen Abfrage
Im Wesentlichen: Sitzungstechnologie ist eine Technologie zum vorübergehenden Speichern von Daten basierend auf dem Backend, das sich von der Datenbank unterscheidet
2 . Warum gibt es eine Sitzung?
Einer der Hauptgründe ist die Zustandslosigkeit von HTTP
Aufgrund der Zustandslosigkeit von HTTP haben wir keine Möglichkeit, den Status des aktuellen Benutzers zu ermitteln HTTP sendet eine Anfrage. Zum Beispiel Informationen darüber, um welchen Benutzer es sich derzeit handelt. Daher benötigen wir zu diesem Zeitpunkt eine Sitzung, um den aktuellen Status zu ermitteln
3. Funktionsweise der Sitzung
Lassen Sie uns zunächst das Prinzip der Sitzung anhand eines Flussdiagramms verstehen, das die Benutzeranmeldung simuliert. Gehen wir davon aus, dass der Benutzer zu diesem Zeitpunkt einen Anmeldevorgang durchführt:
Der gesamte Prozess gliedert sich grob in die folgenden Schritte:
1. Der erste Schritt besteht darin, die Sitzungs-ID, den Benutzernamen und das Passwort im lokalen Cookie in den Hintergrund zu bringen
2. Der Hintergrund erkennt, ob eine entsprechende Sitzungskennung vorhanden ist, und prüft dann, ob die entsprechende PHPSESSID empfangen wird
3 wird direkt generiert. Wenn ja, prüfen Sie, ob die entsprechende Datei vorhanden und gültig ist
3. Wenn sie ungültig ist, müssen wir die Sitzung löschen und eine neue Sitzung erstellen. Nicht ungültig, verwenden Sie die aktuelle Sitzung
Wenn Sie hier sehen, haben Sie möglicherweise ein vorläufiges Verständnis des Funktionsprinzips der Sitzung
Das schematische Diagramm der Sitzung ist wie folgt:
4. Allgemeine Sitzungskonfiguration
Hier nehmen wir PHP als Beispiel, um die Konfiguration der Sitzung zu erklären
Zuerst Wir müssen PHP konfigurieren. Suchen Sie die Datei php.ini im Installationsverzeichnis. Die Hauptfunktion dieser Datei besteht darin, etwas PHP zu konfigurieren, was später ausführlich besprochen wird.
1. Legen Sie den im Cookie identifizierten Feldnamen fest, wenn die Sitzung gespeichert wird. Der Standardwert in PHP ist PHPSESSID
und die entsprechende Einstellung ist: session.name = PHPSESSID
2. Wenn Cookies auf dem Client deaktiviert sind, können Sie die Interaktionsmethode des Logos von Cookie auf URL-Übermittlung ändern, indem Sie session.use_trans_sid
festlegen. Die entsprechende Einstellung lautet:
session.use_trans_sid = 0
3. Sitzungsspeicherposition einrichten
Die entsprechende Einstellung ist
session.save_path="D:phpStudyPHPTutorialtmptmp"
Zuerst müssen wir Installieren Sie
oder, die spezifische Methode ist auf Baidu wamp
phpstudy
Um die Änderungen in der Sitzungsdatei leicht beobachten zu können, müssen wir den Speicherpfad der Sitzung finden (finden Sie
session.save_path
Suchen Sie dann das Verzeichnis, auf das verwiesen wird. Beachten Sie, dass die Sitzung im Allgemeinen in Form von Dateien gespeichert wird, wir sie jedoch auch entsprechend ändern können unsere tatsächliche Situation. Wir können es in der Datei php.ini ändern und anzeigen.
Der erste Schritt zur Verwendung der Sitzung besteht darin, die Sitzung zu öffnen,
<?php /** * Created by PhpStorm. * Date: 2017/12/16 */ session_start();// 打开session $_SESSION["demo1"] = "default"; ?>
session_start()
Der Ausführungseffekt ist wie folgt: Öffnen Sie die entsprechende Datei Der darin enthaltene Inhalt lautet wie folgt:
s:7 stellt einen String-Typ vom Typ String mit einer Länge von 7 Zeichen dar
Wenn wir den Inhalt erneut bearbeiten In der Sitzung wird der Effekt wie folgt sein:
我们观察最近一条的修改日期,我们可以发现就是日期发生了变化,但是文件名没有变化,也就是说,修改session中的内容不会导致文件被新建,而是执行对文件的重新写入操作
session的销毁
销毁session一般有两种方式,unset
和session_destroy
,我们先来说说第一种
代码如下:
<?php /** * Created by PhpStorm. * Date: 2017/12/16 */ session_start();// 打开session $_SESSION["demo1"] = "default_1"; //session的销毁 unset($_SESSION); ?>
这一个相当于没有删除session文件,但是使得即使有对应的PHPSESSID也无法获取到相应的session
session_destroy()
相对来说比较彻底,直接删除对应的session文件
<?php /** * Created by PhpStorm. * Date: 2017/12/16 */ session_start();// 打开session $_SESSION["demo1"] = "default_1"; var_dump(session_name()); //session的销毁 session_destroy(); ?>
对于个人来说比较推荐使用第二种方法,因为当要销毁session的时候,那么也就意味着session已经失效了,所以这个时候我们把它给删掉才是最好的处理方式,一方面可以减少对硬盘的存储,另外一方面可以相对优化session的查询速度。
好了,这个时候我们应该要设置传递给浏览器端的cookie了,默认是自动传送,但是我们应该要学习的是怎样通过后端设置cookie过去
其中有两个方法与session有关的方法我们需要记住,第一个是session_name()
,这个是获取cookie的key值得,第二个是session_id
,这个是session的文件名
设置的示例代码:
<?php /** * Created by PhpStorm. * Date: 2017/12/16 */ session_start();// 打开session $_SESSION["demo1"] = "default_1"; setCookie(session_name(),session_id(),time()-1000); ?>
在设置cookie的时候,我们为了程序的安全性,我们应该要禁止JS可以对cookie进行重写,所以需要设置HTTP ONLY
,具体的设置方法在Php.ini中找到session.cookie_httponly
然后将其的值设置为1或者true即可
除此之外还可以通过setCookie
和ini_set()
来动态设置HTTPONLY属性
在使用session的时候,虽然会从浏览器把PHPSESSID传给后端,但是这个课程不需要人为的去参与。我们只需要保证HTTPONLY被设置就行了。下面是完整的代码:
<?php /** * Created by PhpStorm. * Date: 2017/12/16 */ session_start();// 打开session if ($_SESSION) { var_dump($_SESSION["demo1"]); } else { $_SESSION["demo1"] = "default_" . time(); var_dump($_SESSION["demo1"]); setCookie(session_name(), session_id(), time(), NULL, NULL, NULL, true); } ?>
6、session的相关注意事项
1. 关闭浏览器session同样存在
如果我们没有人为的去设置cookie的生命周期的时候默认关闭浏览器session的状态是无法被保存下来的,因为没有设置cookie的生命周期,默认这个时候cookie为session cookie
也就是在会话存在的时候cookie才有效,所以关闭浏览器cookie失效,导致后端拿不到对应的PHPSESSID,所以无法找到对应的session文件
2. session性能瓶颈怎样解决?
如果是后端存在大量的session的时候,那么这个时候就会出现性能的瓶颈,例如:当后端同时存在有5000个session文件的时候,假设要找的文件是在第4999个,那么也就是说前面至少需要遍历4998次,这样就会浪费过多的时间在后端的循环遍历查找文件中,所以这个时候最有效的方法是使用redis
或者mongodb
,原理是通过将原本保存在本地的session文件写入到内存中,通过内存换空间的形式来达到提升速度
3. 一般不使用URL重写的方法来传递PHPSESSID
其中主要有两个原因,一个是URL重写方式传递的话会导致URL混乱,影响美观。另一个是增大了用户误操作的几率
更多的session的相关配置请点击这里
7、更多的一些PHP.in中的session含义
[Session]
session.save_handler
=的存储方式
session.use_cookies
= 1 #使用cookies在客户端保存会话
session.use_only_cookies
= 1 #去保护URL中传送session id的用户
session.name
= PHPSESSID #session名称(默认PHPSESSID)
session.auto_start
= 0 #不启用请求自动初始化session
session.cookie_lifetime
= 0 #cookie存活时间(0为直至浏览器重启,单位秒)
session.cookie_path
= / #cookie的有效路径
session.cookie_domain
= #cookie的有效域名
session.cookie_httponly
= #httponly标记增加到cookie上(脚本语言无法抓取)
session.serialize_handler
= php #PHP标准序列化
session.gc_probability
=1
session.gc_divisor =1000
#建议设置1000-5000
#概率=session.gc_probability
/session.gc_divisor
(1/1000)
#页面访问越频繁概率越小
session.gc_maxlifetime
=1440 #过期时间(默认24分钟,单位秒)
session.bug_compat_42
= aus #Globale Initialisierungssitzungsvariable
session.bug_compat_warn
= aus
session.referer_check
= #Externe URLs mit IDs verhindern
session.entopy_length
= 0 #Bytes lesen
session.cache_limiter
= {nocache,private,pblic} #HTTP-Puffertyp
session.cache_expire
= 180 #Dokumentablaufzeit (Minuten)
session.use_trans_sid
= 1 #trans_sid-Unterstützung (Standard 0)
session.hash_function
= 0 #Hash-Methode {0:md5(128 Bits),1:SHA-1(160 Bits)}
session.hash_bits_per_character
= 5 #Beim Konvertieren binärer Hash-Daten in lesbare Form beträgt die Anzahl der für jedes Zeichen reservierten Ziffern
session.save_path
= "/var/lib/php/session" #Sitzungs-ID-Speicherpfad
Das Obige ist eine detaillierte Erklärung der Sitzung. Für weitere verwandte Fragen besuchen Sie bitte die chinesische PHP-Website: https://www.php.cn/
Das obige ist der detaillierte Inhalt vonDetailliertes Verständnis der Sitzung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Das Problem wurde im Springboot-Projekt-Produktions-Session-Out-Timeout gefunden: In der Testumgebung wurde der Session-Out durch Ändern der application.yaml konfiguriert, nachdem die Session-Out-Konfiguration überprüft wurde In Kraft trat, wurde die Ablaufzeit für die Veröffentlichung in der Produktionsumgebung direkt auf 8 Stunden festgelegt. Allerdings habe ich am Mittag die Rückmeldung von Kunden erhalten, dass die Projektablaufzeit kurz eingestellt wurde. Wenn eine halbe Stunde lang keine Aktion ausgeführt wird, läuft die Sitzung ab und erfordert wiederholte Anmeldungen. Lösen Sie das Problem der Handhabung der Entwicklungsumgebung: Das Springboot-Projekt verfügt über integriertes Tomcat, sodass der in application.yaml im Projekt konfigurierte Sitzungsausgang wirksam ist. Produktionsumgebung: Die Produktionsumgebung ist freigegeben

Ein Sitzungsfehler wird normalerweise durch den Ablauf der Sitzungslebensdauer oder das Herunterfahren des Servers verursacht. Die Lösungen: 1. Verlängern Sie die Lebensdauer der Sitzung. 3. Verwenden Sie Cookies. 4. Aktualisieren Sie die Sitzung.

Lösung des domänenübergreifenden Problems von PHPSession Bei der Entwicklung der Front-End- und Back-End-Trennung sind domänenübergreifende Anforderungen zur Norm geworden. Wenn es um domänenübergreifende Probleme geht, nutzen wir in der Regel Sitzungen und verwalten diese. Aufgrund von Richtlinieneinschränkungen für den Browserursprung können Sitzungen jedoch standardmäßig nicht über Domänen hinweg gemeinsam genutzt werden. Um dieses Problem zu lösen, müssen wir einige Techniken und Methoden verwenden, um eine domänenübergreifende gemeinsame Nutzung von Sitzungen zu erreichen. 1. Die häufigste Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

Lösung für das Problem, dass die PHP-Sitzung nach der Aktualisierung verschwindet: 1. Öffnen Sie die Sitzung über „session_start();“ 2. Schreiben Sie alle öffentlichen Konfigurationen in eine PHP-Datei 3. Der Variablenname darf nicht mit dem Array-Index identisch sein; 4. Überprüfen Sie einfach den Speicherpfad der Sitzungsdaten in phpinfo und prüfen Sie, ob die Sitzung im Dateiverzeichnis erfolgreich gespeichert wurde.

Die Standardablaufzeit der Sitzungs-PHP beträgt 1440 Sekunden, also 24 Minuten. Das heißt, wenn der Client länger als 24 Minuten nicht aktualisiert wird, läuft die aktuelle Sitzung ab, wenn der Benutzer den Browser schließt Die Sitzung wird nicht mehr existieren.

Problem: Heute ist in unserem Projekt ein Zeitüberschreitungsproblem aufgetreten, und Änderungen an den application.properties von SpringBoot2 wurden nie wirksam. Lösung: Die server.*-Eigenschaften werden verwendet, um den eingebetteten Container zu steuern, der von SpringBoot verwendet wird. SpringBoot erstellt eine Instanz des Servlet-Containers mithilfe einer der ServletWebServerFactory-Instanzen. Diese Klassen verwenden server.*-Eigenschaften, um den kontrollierten Servlet-Container (Tomcat, Jetty usw.) zu konfigurieren. Wenn die Anwendung als WAR-Datei auf einer Tomcat-Instanz bereitgestellt wird, gelten die server.*-Eigenschaften nicht. Sie gelten nicht,

JavaScript-Cookies Die Verwendung von JavaScript-Cookies ist die effektivste Möglichkeit, Präferenzen, Käufe, Provisionen und andere Informationen zu speichern und zu verfolgen. Informationen, die für ein besseres Besuchererlebnis oder Website-Statistiken benötigt werden. PHPCookieCookies sind Textdateien, die auf Client-Computern gespeichert und zu Nachverfolgungszwecken aufbewahrt werden. PHP unterstützt transparent HTTP-Cookies. Wie funktionieren JavaScript-Cookies? Ihr Server sendet einige Daten in Form eines Cookies an den Browser Ihres Besuchers. Browser können Cookies akzeptieren. Falls vorhanden, wird es als reiner Textdatensatz auf der Festplatte des Besuchers gespeichert. Wenn ein Besucher nun eine andere Seite der Website erreicht

1. Implementieren der SMS-Anmeldung basierend auf der Sitzung 1.1 Ablaufdiagramm der SMS-Anmeldung 1.2 Implementieren des Sendens eines SMS-Bestätigungscodes Beschreibung der Front-End-Anfrage: Beschreibung der Anfragemethode POST-Anfragepfad/Benutzer/Code-Anfrageparameter Telefon (Telefonnummer) Rückgabewert Keine Back-End-Schnittstelle Implementierung: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1 Überprüfen Sie die Mobiltelefonnummer, wenn
