2016-06-22 13 views
-1

Ich habe eine Blog-Website. Ich kann die Sprache ändern, indem ich oben auf der Website auf Flaggen klicke. Wenn ich Englisch oder Spanisch wähle, wechselt die Seite in diese Sprache.
Wenn ich jedoch auf einen Menüeintrag klicke, wird die Sprache der Website auf die Standardsprache zurückgesetzt und bleibt nicht in der Sprache, auf die ich geklickt habe.PHP-Sitzung beginnt immer wenn Seite ändert

Ich habe meine gewählte Sprachwert in Session, aber es verliert seinen Wert, wenn ich auf eine andere Seite klicke.

Ich kann sehen, dass meine session_id() immer ändert. Sitzung immer beginnen.

Hier ist meine Session Testcode in Homepage

ob_start(); 
if (session_status() == 1) {  //or if(isset($_SESSION)) both of them not work and session_start() command work. 
    session start(); 
    echo 'started'; 
} 
echo " SESSION ID VALUE: ".session_id()." .Session Status:".session_status(); 

Ausgang: (Sie auf der Webseite sehen)

gestartet SESSION-ID-Wert: 5d7e8cacfde4bc87f6e55b4fcddd5af7 Session Status2/

Mein Gastgeber ist Gottaddy. Ich bat sie, es zu reparieren, aber sie sagten, dass ich diese Codes entwickelte und sie nicht guckten. Ich weiß nicht, was ich tun soll? Ich sehe session_path ist/tmp und ich schreibe is_writable(ini_set("session_path")) es ist lesbar und schreibbar.

+0

Wenn Sie Ihre Browser-Entwickler-Tools öffnen und das Fenster Netzwerk überprüfen, können Sie die Session-ID-Cookie-Header zu sehen? Liegt es sowohl an der Anfrage als auch an der Antwort? Wann ändert es sich? –

Antwort

2

Sie sollten session_start() immer ausführen. Wenn die Sitzung erstellt wird, verwendet sie die bereits erstellte Sitzung, andernfalls erstellt sie eine neue Sitzung.

Auch in Session_Status sollten Sie mit den PHP-Konstanten nicht hartcodierte Werte vergleichen.

session_status() === PHP_SESSION_NONE

http://php.net/manual/en/function.session-status.php

+0

Ich dachte, wenn der Befehl session_start() funktioniert, neue Sitzung beginnt und es neue ID geben. so habe ich Session-Status verwendet – melihbasbug

+0

Dies ist eine wertvolle Information, aber ich kann nicht verstehen, wie es die Frage beantwortet. 'PHP_SESSION_NONE' ist 1 ist alle aktuellen PHP-Versionen ([demo] (https://3v4l.org/SO2Cr)) und der ursprüngliche Code (egal wie gewunden) ruft' session_start() 'schließlich auf. Warum wird das funktionieren, wo Code in Frage nicht? –

+0

Hallo Alvaro, ich sage nicht, dass im Vergleich zu PHP_SESSION_NONE funktioniert, ich schlage nur vor, Konstanten anstelle von fest codierten Werten zu verwenden. –

Verwandte Themen