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