Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数未被识别?_Php_Function_Session - Fatal编程技术网

PHP函数未被识别?

PHP函数未被识别?,php,function,session,Php,Function,Session,我使用一个PHP函数来确定我的用户是否登录,它非常简单,代码本身就可以工作。我以前从未使用过函数,但我想开始。因此,我的函数是_logged(),如果用户登录,它将返回true,否则返回false。但在使用该函数时,无论环境如何,它总是返回true。如果我将代码放在函数中,并明确地将其放在函数外,它就可以工作,但如果我将其放回函数中,即使用户注销,它也会返回true 是否有记录功能 function is_logged(){ if(!empty($_SESSION["user"])){

我使用一个PHP函数来确定我的用户是否登录,它非常简单,代码本身就可以工作。我以前从未使用过函数,但我想开始。因此,我的函数是_logged(),如果用户登录,它将返回true,否则返回false。但在使用该函数时,无论环境如何,它总是返回true。如果我将代码放在函数中,并明确地将其放在函数外,它就可以工作,但如果我将其放回函数中,即使用户注销,它也会返回true

是否有记录功能

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"; }
if(已登录){echo“
已登录”}否则{echo“
未登录”}
但是,只有当我从函数中取出内部代码时,函数才能工作……我很困惑为什么它不工作。该函数列在可以读取会话变量的位置。

更改

if(is_logged)

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

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

试着让它在你这边更具可读性:

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

为什么使用:
是否已记录()

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

您调用的
是不带
()
(括号)的logged()
函数。 我还建议通过以下方式对其进行优化:

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

if(is_logged()){ echo "<br />Logged In"; } else { echo "<br />Not Logged In"; }
功能已记录(){
return!空($_会话[“用户]);
}
if(is_logged()){echo“
已登录”}否则{echo“
未登录”}

如果转到
返回
布尔结果,则不需要在
if
-语句中使用。这只会减慢函数的运行速度。

使用
is\u logged()
这是一个函数调用,可能不是我最聪明的时刻之一……啊!好吧,谢谢你,这将是我编写PHP时最有趣的愚蠢时刻之一PIt可以进一步缩短,以删除不必要的三元条件:
return!空($_会话[“用户])。完成!它只会将函数的运行速度降低几微秒,然后就消失了unnoticed@DarylGill这里微秒,那里微秒。。。好的,如果这个函数经常调用,
:)
,那么总共可能有一秒钟。另外,我看不到在这里使用
if
的好处。是吗?我想这取决于风格,取决于程序员自己如何决定编码
:)
如果OP是第一次使用函数,那么它应该专注于掌握用法,从而使其可读性和代码的自解释性。您的示例和babas的示例可能是最优化的,可读性是noice@DarylGill是的。我猜OP只是在用全局
if
进行调试。尽管如此,我希望OP以后能从这里看到好处。
if (is_logged() === true){
  // Function has returned true so act accordingly  

}else{
 // If here. Function has returned false, so act accordingly 
}
function is_logged(){
    return !empty($_SESSION["user"]);
}

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