PHP Sınıf değişken soru

2 Cevap

I / yapman benim kullanıcı (ben sadece burada alakalı ne dahil) dışarı açmış kolları aşağıdaki sınıf var. Ben orada hesap sayfasına login.php ziyaret eden kaydedilir kullanıcıları yönlendirmek istiyorum. Ben bunu kullanarak yok ....

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

Sorun ben değilim. Bu ben $ Kullanıcı loggedin, hiçbir şey çıkageldi echo durumu> 3 (2) olduğu zaman değil, ancak ben (.. doğru veya yanlış onu geçin. ASLO hava myaccountnew.php yönlendirir olduğunu tür şaşkına ...

İşte sınıfı

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 logout.php gibi görünüyor

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

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

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

2 Cevap

Sen (==) yerine iki tek bir eşittir (=) kullanıyorsanız

Ayrıca, strongly Bu ekleyerek öneriyoruz:

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

Bu özellik bir boolean beri Ayrıca, size true yerine dize gerçek bool değeri "true" karşılaştırılarak yapılmalıdır.

if ($User->loggedIn == true)

// or even shorter:

if ($User->loggedIn)

bunun nedeni:

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

Herhangi bir dize değeri dışında boş bir dize veya dize "0" doğru kabul edilir.

değiştirmek

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

ile

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

çünkü

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

bir atama olduğunu ve her zaman doğru dönecektir

Muhtemelen sadece sizinki = arasında typ0]