PHP功能无法识别?

时间:2013-07-08 02:32:53

标签: php function session

我有一个PHP函数,我用它来确定我的用户是否登录,它非常简单,代码本身也可以。我以前从未使用过很多功能,但我想开始。所以我有我的函数is_logged(),如果用户登录则返回true,否则显然是false。但是在使用该功能时,无论情况如何,它总是返回true。如果我在函数中获取代码,并且明确地将它放在函数之外,它就可以工作,但如果我把它放回函数中,即使用户注销,它也会返回true。

is_logged功能

function is_logged(){
    if(!empty($_SESSION["user"])){
            return true;
    } else {
        return false;
    }
} 

我是如何尝试测试该功能的。

if(is_logged) { echo "<br />Logged In"; } else { echo "<br />Not Logged In"; }

但是这个函数只有在我从函数中取出内部代码时才有效...我很困惑为什么它不起作用。该函数列在可以读取会话变量的位置。

3 个答案:

答案 0 :(得分:4)

更改

if(is_logged)

TO

if(is_logged())

您的功能很容易简化......

function is_logged() {
    return !empty($_SESSION["user"]);
}

答案 1 :(得分:2)

您在没有is_logged()(括号)的情况下调用()函数。 我还建议用以下方法对其进行优化:

function is_logged(){
    return !empty($_SESSION["user"]);
}

if(is_logged()){ echo "<br />Logged In"; } else { echo "<br />Not Logged In"; }

如果您使用if布尔结果,则return - 语句中没有必要。它只会减慢功能。

答案 2 :(得分:1)

尝试使其更具可读性:

if (is_logged) 
{
 echo "<br />Logged In"; 
}
else 
{ 
 echo "<br />Not Logged In"; 
}

尝试这样做:

if (is_logged() === true){
  // Function has returned true so act accordingly  

}else{
 // If here. Function has returned false, so act accordingly 
}

为什么使用: is_logged()

嗯,这表示函数调用..而使用is_logged将使PHP查找已定义的常量。