0

我有一个 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"; }

但是只有当我将内部代码从函数中取出时,该函数才有效……我对它为什么不起作用感到非常困惑。该函数列在可以读取会话变量的位置。

4

3 回答 3

4

改变

if(is_logged)

if(is_logged())

而且您的功能可以很容易地简化...

function is_logged() {
    return !empty($_SESSION["user"]);
}
于 2013-07-08T02:34:05.333 回答
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布尔结果,则不需要 -语句。它只会减慢功能。

于 2013-07-08T02:37:04.057 回答
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()

好吧,这表明了一个函数调用。而 usingis_logged将使 PHP 寻找一个已定义的常量。

于 2013-07-08T02:35:24.337 回答