2016-05-12 7 views
-2

Ich versuche, eine andere Navigationsleiste abhängig von einer Benutzerberechtigung anzuzeigen. Das einzige Problem ist, dass wenn ich mich am System anmelde, es das erste else zeigt, unabhängig von der Autorität des Benutzers. Um sicherzustellen, dass das Problem in der Schleife ist, habe ich versucht, die else ifs zu wechseln und das gleiche passiert ist. Der Code befindet sich in einer externen PHP-Datei und ich rufe die Funktion oben auf jeder Seite auf. irgendwelche Vorschläge ?Wenn Anweisung funktioniert nur bis 1. else wenn

function checkAuth() { 
    session_start(); 

    if(!isset($_SESSION['role'])) { 
    require_once('menu.php'); 
    } else if ($_SESSION['role'] = "registered") { 
    require_once('regnav.php'); 
    } else if ($_SESSION['role'] = "admin") { 
    echo "FDGFGFD"; 
    require_once('adminnav.php'); 
    } 

} 
+3

Sie ein Doppel '=' Zeichen für jede Bedingung Prüfung verwenden. –

+0

Ich habe versucht, mit der Doppel ==, aber wenn ich dies tun keine Navbar erscheint – Chanter

Antwort

3

Ihr Problem ist mit diesem Teil: $_SESSION['role'] = "registered". Die einzelne = bedeutet, dass Sie der Variablen $_SESSION['role'] den Wert "registriert" zuweisen.

Wenn Sie etwas überprüfen evaluieren, müssen Sie == dh $_SESSION['role'] == "registered"

Sie werden das gleiche Problem mit den zweiten elseif

3

Sie müssen verwenden müssen ein doppeltes = Zeichen für jede Bedingung Prüfung verwenden, . Für jede Bedingungsprüfung in if oder else if müssen Sie == in der Mitte der Variablen verwenden.

Wenn Sie nur = verwenden, bedeutet dies, dass der Wert in $_SESSION['role'] zugewiesen wird. Sie können auch === verwenden, um sowohl den Wert als auch den Typ der Variablen zu überprüfen.

Gültige Funktion ist:

function checkAuth() 
{ 
session_start(); 


if(!isset($_SESSION['role'])) 
{ 
    require_once('menu.php'); 
} 

else if ($_SESSION['role'] == "registered"){ 
    require_once('regnav.php'); 
} 

else if ($_SESSION['role'] == "admin"){ 
    echo "FDGFGFD"; 
    require_once('adminnav.php'); 
} 

} 
?> 
+1

Oder verwenden Sie '===', um auch auf Typen zu prüfen. Das verhindert unerwartete Ergebnisse, wenn '$ _SESSION ['role']' 0 ist. – Arjan

+0

das ist auch wahr ... –

Verwandte Themen