为什么这个变量总是返回true?

时间:2010-12-22 06:05:39

标签: php session-variables

我正在尝试编写登录脚本。登录后,会设置会话变量,并在主页面上运行isLoggedIn函数。问题是,变量$ loggedIn总是返回true。有人可以帮忙吗?

function validateUser($user)
{
    if(isset($user)){
    session_regenerate_id ();//this is a security measure
    $_SESSION['logged'] = 1;
    $_SESSION['userid'] = $user;}
}
//Validates Login
function isLoggedIn()
{
    if($_SESSION['logged'] = 1)
        return true;
    return false;
}

$loggedIn = isLoggedIn();

if($loggedIn){ SHOW CONTENT FOR LOGGED IN USERS }

else { show content for users not logged in }

4 个答案:

答案 0 :(得分:10)

您正在使用赋值运算符 =而不是条件运算符 ==

应该是:

if ($_SESSION['logged'] == 1)
    return true;

赋值=的结果是右侧表达式,即1,在这种情况下始终为真。 :)

答案 1 :(得分:4)

这是因为您使用单个等号设置$ _SESSION ['logged']。改为使用双等号:

function isLoggedIn()
{
    if($_SESSION['logged'] == 1)
        return true;
    return false;
}

答案 2 :(得分:3)

function isLoggedIn() {     if($ _ SESSION ['logged'] = 1)//为$ _SESSION ['logged']分配值'1'所以在这个if条件下它检查是否有值是$ _SESSION ['logged'],将适用于所有情况(有效/无效)         返回true;     返回false; }

$ loggedIn = isLoggedIn(); / $ loggedIn的值将始终为true

将if($ _ SESSION ['logged'] = 1)更改为if($ _ SESSION ['logged'] == 1)

答案 3 :(得分:2)

不是 if($ _ SESSION ['logged'] = 1) 这是正确的 - > if($ _ SESSION ['logged'] == 1)