2009-06-15 15 views
0

Ich habe die folgende Klasse, die meinen Benutzer an/abgemeldet behandelt (ich habe nur enthalten, was hier relevant ist). Ich möchte angemeldete Benutzer, die login.php aufrufen, auf ihre Kontoseite umleiten. Ich tue dies mit ....PHP Klassenvariable Frage

$User = new User(); 
if ($User->loggedin = 'true') header('Location:MyAccountNEW.php'); 

Das Problem ist das Wetter myaccountnew.php umleitet ich es wahr oder falsch wechseln .. (obwohl es nicht der Fall ist, wenn die Bedingung (2> 3). Aslo wenn ich $ User-loggedin echo, kommt nichts auf. ich bin irgendwie ratlos ...

Heres die Klasse

Class User { 

public $loggedin = false; 
public $username = ""; 
public $ShopperID = ""; 

function __construct() { 
    $this->CheckLogin(); 
} 

function CheckLogin() { 
    if (!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username'])) { 
      $this->loggedin = true; 
      $this->username = $_SESSION['Username']; 
    } 
    else { 
     $this->loggedin = false; 
    } 
} 

Heres, was logout.php sieht aus wie

<?php include ("base.php"); 
    include("userclass.php"); 

    $User = new User(); 
    $User->loggedin = false; 

$ _SESSION = array(); session_destroy(); ?>

+0

Zu schnell für mich :) 3 Antworten beim Tippen meiner Antwort. –

+0

Ach komm schon ... :) –

+0

Christ, ich kann nicht glauben, dass ich ein extra Gleichzeichen verpasst habe lol. Danke;) – asdfasdfasdfasdf

Antwort

6

Sie sind eine einzige equals mit (=) anstelle von zwei (==)

Auch ich würde stark empfehlen diese Zugabe:

if ($User->loggedIn == 'true') { 
    header('location: somewhereelse.php'); 
    die(); // <-- important!! 
} 

Auch da Diese Eigenschaft ist ein boolescher Wert. Sie sollten den tatsächlichen Bool-Wert true anstelle der Zeichenfolge "true" vergleichen.

if ($User->loggedIn == true) 

// or even shorter: 

if ($User->loggedIn) 

ist dies, weil:

true == "true" 
true == "foo" 
true == "false" 

auseinander Jeder String-Wert aus einer leeren Zeichenfolge oder die Zeichenfolge "0" wahr angesehen wird.

+0

ausgezeichneter Punkt über das Hinzufügen von sterben(), um die weitere Verarbeitung der Seite zu verhindern –

1

if ($User->loggedin = 'true') 

mit

if ($User->loggedin == 'true') 

weil

if ($User->loggedin = 'true') 

eine Zuordnung und wird immer wahr

wahrscheinlich nur ein typ0 o Rückkehr ersetzen f Ihr =]