2010-12-22 17 views
2

Ich versuche, ein Login-Skript zu schreiben. Nach dem Einloggen wird eine Sitzungsvariable gesetzt, und auf der Hauptseite wird die Funktion isLoggedIn ausgeführt. Das Problem ist, dass die Variable $ loggedIn immer true zurückgibt. Kann jemand helfen?Warum gibt diese Variable immer wahr zurück?

function validateUser($user) 
{ 
    if(isset($user)){ 
    session_regenerate_id();//this is a security measure 
    $_SESSION['logged'] = 1; 
    $_SESSION['userid'] = $user;} 
} 
//Validates Login 
function isLoggedIn() 
{ 
    if($_SESSION['logged'] = 1) 
     return true; 
    return false; 
} 

$loggedIn = isLoggedIn(); 

if($loggedIn){ SHOW CONTENT FOR LOGGED IN USERS } 

else { show content for users not logged in } 

Antwort

10

Sie verwenden die Zuweisungsoperator= anstelle eines Konditionaloperator==.

Es soll sein:

if ($_SESSION['logged'] == 1) 
    return true; 

Das Ergebnis einer Zuweisung = der Ausdruck der rechten Seite ist, die 1 ist, was in diesem Fall immer der Fall ist. :)

+0

danke, das hat funktioniert, aber $ loggedIn gibt immer den Wert "1" gibt es einen Grund dafür? – mcbeav

+0

Ja, weil Sie den Wert von $ loggedIn auf 'true' setzen, was in PHP als' 1' angezeigt wird. – RabidFire

+0

gut ich meinte, auch wenn die sitzungsvariable nicht gesetzt war es würde echo 1, aber alles wurde behoben, danke für die hilfe! – mcbeav

4

es ist, weil Sie $ _SESSION ['angemeldet'] mit den einzelnen Gleichgestellten setzen. Verwenden Sie ein doppelt Gleichen statt:

function isLoggedIn() 
{ 
    if($_SESSION['logged'] == 1) 
     return true; 
    return false; 
} 
+0

danke, das hat funktioniert, aber $ loggedIn gibt immer den Wert "1" aus, gibt es einen Grund dafür? – mcbeav

2

NICHT DIESE if ($ _ SESSION [ 'angemeldet'] = 1) Das ist richtig -> if ($ _ SESSION [ 'angemeldet'] == 1)

3

Funktion isLoggedIn() { if ($ _ SESSION [ 'angemeldet'] = 1) // zugewiesen Wert '1' auf $ _SESSION [ 'angemeldet'] so in diesem, wenn die Bedingung, wenn es prüft es irgendeine value ist $ _SESSION ['logged'], was für alle Fälle gilt (gültig/ungültig) return true; Rückgabe false; }

$ LoggedIn = isLoggedIn();/denen der Wert für $ LoggedIn wird

Änderung der, wenn immer wahr sein ($ _ SESSION [ 'angemeldet'] = 1) if ($ _ SESSION [ 'angemeldet '] == 1)

Verwandte Themen