Heim >Backend-Entwicklung >PHP-Problem >Lösung für PHP-Sitzungsfehler und nicht-Zustellung
Lösung für das Problem, dass die PHP-Sitzung fehlschlägt und nicht zugestellt wird: Schreiben Sie zunächst eine PHP-Datei mit dem Inhalt „a3358401e79a3858445207450bf7e497“ und übergeben Sie sie dann an den Server, um die Daten des Servers anzuzeigen Parameterkonfiguration, die angibt, dass die Benutzer-ID die identifizierte Sitzung ist. Weisen Sie Havi schließlich den Namen der Sitzung zu und geben Sie die Sitzung aus.
In PHP kann die Sitzung nicht zur nächsten Seite weitergeleitet werden. Es gibt im Allgemeinen zwei Situationen:
Schreiben wir zunächst eine PHP-Datei: a3358401e79a3858445207450bf7e497
und senden sie an den Server, um die Parameterkonfiguration des Servers anzuzeigen.
Gehen Sie zum Abschnitt session
und sehen Sie, dass der Parameter session.use_trans_sid
auf 0 gesetzt ist.
Dieser Parameter gibt an, ob transparente SID-Unterstützung aktiviert werden soll, d. h., ob session
zusammen mit der URL übergeben wird. Nach meinem persönlichen Verständnis öffnet jede URL ein session
, sobald dieser Parameter auf 0 gesetzt ist. Auf diese Weise können nachfolgende Seiten die Sitzung der vorherigen Seite nicht verfolgen, was wir als unzustellbar bezeichnen. Die beiden Seiten generieren zwei session
-Dateien auf der Serverseite und sind nicht miteinander verbunden.
Eine Möglichkeit besteht also darin, den Wert von php.ini
in der Konfigurationsdatei session.use_trans_sid
auf 1 zu ändern.
Natürlich wissen wir, dass nicht jeder die Befugnis hat, die Konfiguration von PHP zu ändern. Welche anderen indirekten Lösungen gibt es also?
Lassen Sie uns zwei Beispiele zur Veranschaulichung verwenden:
Datei 1 test1.php
<?php //表明是使用用户ID为标识的session session_id(SID); //启动session session_start(); //将session的name赋值为Havi $_SESSION['name']=”Havi”; //输出session,并设置超链接到第二页test2.php echo “<a href=\”test2.php\”>”.$_SESSION['name'].”</a>”; ?>
Datei 2: test2.php
<?php 表明是使用用户ID为标识的session session_id(SID); //启动session session_start(); //输出test1.php中传递的session。 echo “This is “.$_SESSION['name']; ?>
Jede Seite muss schreiben, um die Sitzung zu öffnen, sonst funktioniert es immer noch nicht richtig
Also , Der entscheidende Punkt: Fügen Sie session_start();
; vor session_id(SID)
hinzu, damit der Server beim Konvertieren der Seite das vom Benutzer im session
-Ordner des Servers gespeicherte session
verwendet, wodurch das Übertragungsproblem gelöst wird.
Einige Kollegen berichteten jedoch, dass der Wert der Sitzung nicht genutzt werden kann, wenn die session
mehrerer Benutzer in einer SID geschrieben sind. Es gibt also eine andere Möglichkeit, dieses Problem zu lösen. Sie müssen session_id(SID);
nicht hinzufügen. Voraussetzung ist, dass Sie über Konfigurationsberechtigungen für die php.ini des Servers verfügen:
<code><span style='font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;'>output_buffering</span><span style='font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;'></span>
output_buffering
wird auf ON geändert und die Wahrheit geht verloren. session
phpinfo.php
Der zweite mögliche Grund ist, dass Sie keine Leseberechtigung für den Ordner haben, in dem session
auf dem Server gespeichert ist, oder zu und anzeigen
<span style='font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;'>session.save_path: var/tmp</span>
所以就是检查下var/tmp文件夹是否可写。
写一个文件:test3.php来测试一下:
<? echo var_dump(is_writeable(ini_get(“session.save_path”))); ?>
如果返回bool(false),证明文件夹写权限被限制了,那就换个文件夹咯,在你编写的网页里加入:
//设置当前目录下session子文件夹为session保存路径。$sessSavePath = dirname(__FILE__).’/session/’; //如果新路径可读可写(可通过FTP上变更文件夹属性为777实现),则让该路径生效。if(is_writeable($sessSavePath) && is_readable($sessSavePath)){session_save_path($sessSavePath);}
Das obige ist der detaillierte Inhalt vonLösung für PHP-Sitzungsfehler und nicht-Zustellung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!