我有以下类来处理我的用户登录/注销(我只包括这里的相关内容)。我想将登录访问login.php的用户重定向到该帐户页面。我这样做......
$User = new User();
if ($User->loggedin = 'true') header('Location:MyAccountNEW.php');
问题是这重定向到myaccountnew.php天气我将其切换为true或false ..(虽然条件为(2> 3)时不会。当我回显$ User-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;
}
}
heres是什么logout.php看起来像
<?php include ("base.php");
include("userclass.php");
$User = new User();
$User->loggedin = false;
$ _ SESSION = array(); session_destroy(); ?&GT;
答案 0 :(得分: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"
之外的任何字符串值都被视为true。
答案 1 :(得分:1)
替换
if ($User->loggedin = 'true')
与
if ($User->loggedin == 'true')
,因为
if ($User->loggedin = 'true')
是一项作业,将始终返回true
可能只是你的一个类型=]