Heim > Artikel > Backend-Entwicklung > Was soll ich tun, wenn PHP die Sitzung nicht bestehen kann?
Lösung für PHP, das keine Sitzung übertragen kann: 1. Cookies im Client aktivieren. 2. Browserprobleme überprüfen und auf Cookies zugreifen. 3. Session.use_trans_sid in php.ini aktivieren.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
Lösung für das Problem, dass SESSION in PHP nicht seitenübergreifend weitergegeben werden kann
Freunde, die haben verwendete SESSION in PHP Möglicherweise tritt ein solches Problem auf: Die SESSION-Variable kann nicht seitenübergreifend übergeben werden. Das beschäftigte mich mehrere Tage lang, und schließlich dachte ich darüber nach und löste dieses Problem, indem ich nach Informationen suchte. Ich denke, die Gründe für dieses Problem sind folgende:
1. Cookies sind auf dem Client deaktiviert
2 Es liegt ein Problem mit dem Browser vor und es ist vorübergehend kein Zugriff auf Cookies möglich
3 oder beim Kompilieren ist die Option --enable-trans-sid nicht aktiviert
Warum passiert das? Lassen Sie es mich unten erklären:
Die Sitzung wird auf der Serverseite gespeichert (die Sitzung wird standardmäßig als Datei gespeichert, die Datei des Benutzers wird abgerufen und der Wert der Variablen wird abgerufen). Die Sitzungs-ID kann das Cookie des Clients oder Http1.1 verwenden. Der Query_String des Protokolls (der Teil nach dem „?“ der aufgerufenen URL) wird an den Server gesendet, und dann liest der Server das Sitzungsverzeichnis. Mit anderen Worten: Die Sitzungs-ID ist die ID-Karte zum Abrufen der im Dienst gespeicherten Sitzungsvariablen. Wenn der Code session_start(); ausgeführt wird, wird eine Sitzungsdatei auf dem Server generiert, und die Sitzungsvariable wird so definiert, dass sie in der gerade generierten Sitzungsdatei in einer bestimmten Form gespeichert wird. Über die Sitzungs-ID können die definierten Variablen abgerufen werden. Nach dem Überqueren der Seite müssen Sie session_start() erneut ausführen. Die entsprechende Sitzungs-ID wird entsprechend generiert. Mit dieser Sitzungs-ID können Sie die erste erwähnte Sitzungsdatei nicht abrufen früher eingefügt, da diese Sitzungs-ID nicht der „Schlüssel“ zum Öffnen ist. Wenn Sie den Code session_id($session id); vor session_start(); hinzufügen, wird keine neue Sitzungsdatei generiert und die dieser ID entsprechende Sitzungsdatei wird direkt gelesen.
Die Sitzung in PHP verwendet standardmäßig das Cookie des Clients, um die Sitzungs-ID zu speichern. Wenn also ein Problem mit dem Cookie des Clients auftritt, wirkt sich dies auf die Sitzung aus. Es muss beachtet werden, dass die Sitzung nicht unbedingt auf Cookies angewiesen ist, was auch die Genialität der Sitzung im Vergleich zu Cookies darstellt. Wenn die Cookies des Clients deaktiviert sind oder ein Problem auftritt, hängt PHP die Sitzungs-ID automatisch an die URL an, sodass die Sitzungsvariable über die Sitzungs-ID seitenübergreifend verwendet werden kann. Dieser Anhang hat aber auch bestimmte Bedingungen, nämlich „session.use_trans_sid = 1 in php.ini oder die Option --enable-trans-sid ist während der Kompilierung aktiviert“.
Nachdem wir die oben genannten Prinzipien verstanden haben, lassen Sie uns Cookies beiseite legen und Sitzungen verwenden. Es gibt drei Hauptmethoden:
1. Setzen Sie session.use_trans_sid = 1 in php.ini oder aktivieren Sie die Option --enable-trans-sid Damit PHP die Sitzungs-ID automatisch seitenübergreifend weitergibt.
2. Übergeben Sie den Wert manuell über die URL und die Sitzungs-ID über das versteckte Formular.
3. Speichern Sie session_id in einer Datei, Datenbank usw. und rufen Sie sie während des seitenübergreifenden Prozesses manuell auf.
Lassen Sie uns das anhand eines Beispiels veranschaulichen:
s1.phps2.php
Wenn Sie nun das Cookie auf dem Client manuell schließen und erneut ausführen, erhalten Sie möglicherweise kein Ergebnis. Wenn Sie das Ergebnis nicht erhalten können, setzen Sie „session.use_trans_sid = 1 in php.ini oder aktivieren Sie beim Kompilieren die Option --enable-trans-sid“ und Sie erhalten das Ergebnis „Volksrepublik China“5ca33f6862f260ccdedafe2146b4e504Nächste Seite5db79b134e9f6b82c0b36e0489ee08ed " ;
Echo $url ; ?>
309fa725664d298d2d1424d65f766f56
Führen Sie den obigen Code aus. Wenn das Client-Cookie normal ist, sollten Sie das Ergebnis „Volksrepublik China“ erhalten.
Dies ist die obige Art, 1 zu sagen.
Lassen Sie uns unten über Ansatz 2 sprechen:
Der geänderte Code lautet wie folgt:
s1.php471b35ff96757914dd13fa1b0e9492dcNächste Seite5db79b134e9f6b82c0b36e0489ee08ed " ;
Echo $url ; ?>
s2.php Methode 3: login.html2c4c244de5ed42630b3f1039499f5943
3b2729eccbdc1a8f4234581bb2088b9a
41a5f5b1b33237b4b957543f2d56b8226a645b1da76266ab6704e4b0039f9477e43a299e53362b2e07e63ca6e188dd2b Login e4bf1e768cf847e0602f318707869ec4
cf6ac650b05599a9ad2cee6cb41c669c
4fe11b896a6227e05884e2acd2993d09
86a52fcf656fccfcef68162754720b4c 请登录:
1cb926065c73371b1c8031ed5a590d9f
用户名 :5d74cc4a5141c9bbbda6329a11fba6702cd52db9b797f2c7ecc9db34e8bbc4a4
口 令 :62c65dda2537e752a6f5215085ca54de2cd52db9b797f2c7ecc9db34e8bbc4a4
b2db3651b2ecc8af79c9d854c6f500ca
786c687bc915e6597ed836be1852f215
a986419e1d24176099b6f99c9c0b7c2a
4a638ae04d15c042ea58e396894920d5
mylogin1.php
<? php $name = $_POST [ ' name ' ]; $pass = $_POST [ ' pass ' ]; if ( ! $name || ! $pass ) { echo " 用户名或密码为空,请<a href="login.html">重新登录</a> " ; die (); } if ( ! ( $name == " laogong " && $pass == " 123 " )) { echo " 用户名或密码不正确,请<a href="login.html">重新登录</a> " ; die (); } // 注册用户 ob_start (); session_start (); $_SESSION [ ' user ' ] = $name ; $psid = session_id (); $fp = fopen ( " e:/tmp/phpsid.txt " , " w+ " ); fwrite ( $fp , $psid ); fclose ( $fp ); // 身份验证成功,进行相关操作 echo " 已登录<br> " ; echo " <a href="mylogin2.php">下一页</a> " ; ?>mylogin2.php
2918cc39dafbdc12d35f414100536d7dmelden Sie sich an5db79b134e9f6b82c0b36e0489ee08ed " ;
Sterben ();
}
?>
Bitte deaktivieren Sie auch den Cookie-Test, Benutzername: laogong, Passwort: 123. Hiermit wird die Sitzungs-ID in einer Datei gespeichert. Die Datei lautet: e:/tmp/phpsid.txt. Bitte legen Sie den Dateinamen oder Pfad entsprechend Ihren Anforderungen fest System.
Was die Datenbankmethode betrifft, werde ich kein Beispiel nennen, sie ähnelt der Dateimethode.
Zusammenfassend haben die oben genannten Methoden eines gemeinsam: Sie müssen die Sitzungs-ID auf der vorherigen Seite abrufen und dann einen Weg finden, sie an die nächste Seite weiterzugeben. Fügen Sie vor dem Code session_id (übergebene Sitzungs-ID) hinzu session_start(); Code auf der nächsten Seite );
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn PHP die Sitzung nicht bestehen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!