Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung für PHP-Sitzungsfehler und nicht-Zustellung

Lösung für PHP-Sitzungsfehler und nicht-Zustellung

卡哇伊
卡哇伊Original
2020-07-06 13:43:023278Durchsuche

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.

Lösung für PHP-Sitzungsfehler und nicht-Zustellung

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[&#39;name&#39;]=”Havi”;
//输出session,并设置超链接到第二页test2.php
echo “<a href=\”test2.php\”>”.$_SESSION[&#39;name&#39;].”</a>”;
?>

Datei 2: test2.php

<?php
表明是使用用户ID为标识的session
session_id(SID);
//启动session
session_start();
//输出test1.php中传递的session。
echo “This is “.$_SESSION[&#39;name&#39;];
?>

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. sessionphpinfo.phpDer 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

Gespeicherte Adresse:

<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!

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