2016-03-21 18 views
-3

Ich habe 2 Dateien auf meinem Haupt-index.php Ich habe:PHP Login-Sitzung Zustand ändert sich nicht

<?php 
session_start(); 
$_session['login']=false; 
?? 

Ich habe eine andere PHP-Datei, wo ich die navbar speichern, in dieser PHP-Datei habe ich

if ($_SESSION['login']==true) { ?> 
    show this menu.. user is logged in. 
    <?php }else { <? 
    show this one, not logged in. 
    <?php } ?> 

in meinem login.php ich einfach haben:

session_start(); 
$_SESSION['login']=true; 

so, warum ist es, dass, wenn ich die login.php-Datei aufrufen (auf dem Klick auf eine Schaltfläche), der se Zustand Zustand wird nicht geändert?

+2

$ _session! = $ _SESSION. PHP-Variablen unterscheiden zwischen Groß- und Kleinschreibung. – Devon

+3

'$ _session' ist ein Superglobal und MUSS in Großbuchstaben geschrieben werden. –

+0

Anders als oben, warum deklarieren Sie ein PHP-Tag für jede einzelne Zeile? – frosty

Antwort

0

Zuerst werden alle Dateien, die Sie $ _SESSION verwenden, müssen Sie vor jedem Code "session_start()" einfügen

0

Superglobals in PHP muss in Großbuchstaben geschrieben werden. Deshalb sollte diese in Großbuchstaben geschrieben werden:

$_session['login']=false; 

So:

$_SESSION['login']=false; 
1

$_session ist ein superglobalen und in Großbuchstaben geschrieben werden muss.

Referenz:

und auf Fehler überprüft haben, würden Sie etwas dagegen haben geworfen.

Sie müssen auch sicherstellen, dass die Sitzung in allen Dateien gestartet wurde mit Sitzungen.

Referenz:

Sie haben auch 2x ??, die ich nicht, ob es Teil der eigentlichen Code.

Wenn es ist, dann muss das als ?> lesen.

Nebenbei bemerkt:

Es ist immer am besten, um zu überprüfen, ob die Sitzung festgelegt ist, eher dann überprüft nur, ob es true|false ist.

d.h .:

if (isset($_SESSION['login']) && $_SESSION['login']==true) 

oder (nicht leer)

if (!empty($_SESSION['login']) && $_SESSION['login']==true) 
0

gut sieht aus wie ich mein Problem gelöst .. einer jener Momente facepalm. Ich habe nicht überprüft, ob die Sitzung bereits eingestellt wurde und daher habe ich sie immer auf 0 zurückgesetzt, als index.php aktualisiert wurde.Danke, dass du mich wissen lässt, dass es in Großbuchstaben sein soll, das war mir nicht bewusst. Also fügte ich das an den Anfang meiner index.php:

<?php 
session_start(); 
if (!isset($_SESSION['login'])) { 
    $_SESSION['login']=0; 
} 

?> 
+0

etwas, an das ich schon gedacht hatte, bevor ich deine Antwort sah ;-), nur etwas anders formuliert. –

Verwandte Themen