2009-06-15 11 views
0

J'ai la classe suivante qui gère mon utilisateur connecté/déconnecté (j'ai seulement inclus ce qui est pertinent ici). Je souhaite rediriger les utilisateurs connectés qui visitent login.php vers la page de leur compte. Je le fais en utilisant ....PHP Classe variable question

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

Le problème est le redirige vers myaccountnew.php temps je passe à vrai ou faux .. (bien qu'il ne lorsque la condition est (2> 3). Aslo quand j'echo $ User-loggedin, rien ne vient. Je suis un peu perplexe ...

Heres la classe

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 ce que logout.php ressemble

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

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

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

+0

Trop vite pour moi :) 3 réponses tout en tapant ma réponse. –

+0

Oh viens ... :) –

+0

Christ, je ne peux pas croire que j'ai raté un signe égal d'égal à lol. Merci;) – asdfasdfasdfasdf

Répondre

6

Vous utilisez un seul égal à égal (=) au lieu de deux (==)

Aussi, je fortement recommande d'ajouter ceci:

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

En outre, depuis cette propriété est un booléen, vous devez comparer avec la valeur booléenne réelle true au lieu de la chaîne "true".

if ($User->loggedIn == true) 

// or even shorter: 

if ($User->loggedIn) 

parce que:

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

Toute valeur de chaîne à part une chaîne vide ou la chaîne "0" est considéré comme vrai.

+0

excellent point sur l'ajout de die() pour empêcher le traitement continu de la page –

1

remplacer

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

avec

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

parce

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

est une mission et renverra toujours vrai

probablement juste un typ0 o f = vôtre]