Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn die PHP-Sitzung keinen Wert übergeben kann?

Was tun, wenn die PHP-Sitzung keinen Wert übergeben kann?

藏色散人
藏色散人Original
2021-09-19 10:36:232736Durchsuche

Lösung für das Problem, dass die PHP-Sitzung keinen Wert übertragen kann: 1. Überprüfen Sie die Parameterkonfiguration des Servers. 2. Ändern Sie den Wert von „session.use_trans_sid“ in der Konfigurationsdatei php.ini. 3. Überprüfen Sie die „var /tmp“-Datei Überprüfen Sie einfach, ob der Ordner beschreibbar und änderbar ist.

Was tun, wenn die PHP-Sitzung keinen Wert übergeben kann?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP7.1, Dell G3-Computer.

Was soll ich tun, wenn die PHP-Sitzung den Wert nicht übergeben kann?

Lösung für PHP-Sitzungsfehler und Nichtübergabe

In PHP kann die Sitzung nicht zur nächsten Seite weitergeleitet werden. Es gibt im Allgemeinen zwei Situationen:

Lassen Sie uns zuerst eine PHP-Datei schreiben: , übergeben Sie es an den Server, um die Serverparameterkonfiguration anzuzeigen.

Gehen Sie zum Abschnitt „Sitzung“ und stellen Sie sicher, dass der Parameter „session.use_trans_sid“ auf Null gesetzt ist.

Dieser Parameter gibt an, ob die transparente SID-Unterstützung aktiviert werden soll, d. h. ob die Sitzung zusammen mit der URL übergeben wird. Nach meinem persönlichen Verständnis wird für jede URL eine Sitzung gestartet, 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 Sitzungsdateien auf der Serverseite und sind nicht miteinander verbunden. (Ich weiß nicht, ob das richtig ist? Bitte geben Sie mir einen Rat.)

Eine Möglichkeit besteht also darin, den Wert von session.use_trans_sid in der Konfigurationsdatei php.ini 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

//Gibt an, dass die Sitzung durch die Benutzer-ID identifiziert wird
session_id(SID);
//Starten Sie die Sitzung
session_start();

//Weisen Sie Havi den Namen der Sitzung zu
$_SESSION ['name']=“Havi“;
//Sitzung ausgeben und einen Hyperlink zur zweiten Seite setzen test2.php
echo „“.$_SESSION['name'] . "";
?>

Datei 2: test2.php

gibt an, dass die Sitzung durch die Benutzer-ID identifiziert wird
session_id (SID);
//Sitzung starten
session_start ();

//Gib die in test1.php bestandene Sitzung aus.
echo „Das ist „.$_SESSION['name'];
?>

Jede Seite muss schreiben, um die Sitzung zu öffnen. . Andernfalls funktioniert es immer noch nicht richtig

Der entscheidende Punkt besteht also darin, session_id(SID); vor session_start(); hinzuzufügen, damit der Server beim Konvertieren der Seite die vom Benutzer in gespeicherte Sitzung verwendet Serversitzungsordner, der das Übertragungsproblem löst.

Einige Kollegen berichten jedoch, dass der Wert der Sitzung nicht vollständig ausgeschöpft wird, wenn die Sitzungen mehrerer Benutzer in einer SID geschrieben werden. Es gibt also eine andere Möglichkeit, dieses Problem zu lösen. Voraussetzung ist, dass Sie über Konfigurationsberechtigungen für die php.ini des Servers verfügen:

output_buffering ist auf ON gesetzt.

Der zweitemögliche Grund ist, dass es keine Leseberechtigung für den Ordner gibt, in dem der Server die Sitzung speichert, oder gehen Sie zurück zu phpinfo.php und überprüfen Sie die Adresse, an der die Sitzung gespeichert ist:

session .save_path: var /tmp

Überprüfen Sie also einfach, ob der Ordner var/tmp beschreibbar ist.

Schreiben Sie eine Datei: test3.php, um sie zu testen:

echo var_dump(is_writeable(ini_get(“session.save_path”)));
?>

Wenn bool(false) zurückgegeben wird, beweisen Sie Die Ordner- und Schreibberechtigungen der Datei sind eingeschränkt. Ändern Sie dann den Ordner und fügen Sie Folgendes hinzu:

// Legen Sie den Sitzungsunterordner im aktuellen Verzeichnis als Sitzungsspeicherpfad auf der von Ihnen geschriebenen Webseite fest.
$sessSavePath = dirname(__FILE__).’/session/’;

//Wenn der neue Pfad lesbar und beschreibbar ist (kann durch Ändern des Ordnerattributs auf 777 auf FTP erreicht werden), dann machen Sie den Pfad wirksam.
if(is_writeable($sessSavePath) && is_readable($sessSavePath))
{session_save_path($sessSavePath);}

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn die PHP-Sitzung keinen Wert übergeben kann?. 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