2009-06-15 94 views
0

我有以下類處理我的用戶登錄/註銷(我只包括這裏有什麼相關的)。我想將登錄訪問login.php的用戶重定向到那裏的帳戶頁面。我做到這一點使用....PHP類變量問題

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

的問題是這個重定向到myaccountnew.php天氣我切換到真或假的。(雖然當條件(2> 3)它沒有。ASLO當我回聲$用戶的loggedIn,沒有出現。我有點難倒...

繼承人的類

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; 
    } 
} 

繼承人什麼logout.php看起來像

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

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

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

+0

對我來說太快了:)輸入我的回覆時輸入3個答案。 – 2009-06-15 04:01:44

+0

哦,來吧...... :) – 2009-06-15 04:01:48

回答

6

您使用的是單等號(=),而不是兩個(==)

另外,我想強烈推薦添加此:

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

而且,由於該屬性是一個布爾值,您應該將其與實際布爾值true進行比較,而不是字符串"true"

if ($User->loggedIn == true) 

// or even shorter: 

if ($User->loggedIn) 

這是因爲:

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

從空字符串或字符串"0"開的任何字符串值被認爲是真實的。

1

更換

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

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

因爲

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

是一個任務,並總是返回true

可能只是一個typ0Ø ˚F你=]