if else条件不在PHP中调用函数

时间:2009-07-22 14:22:24

标签: php

if($process->g_User() && $process->g_Pass()){
         if($process->LdapConn()){
             if($process->LdapBind()){

                    return 'google';

             }else{
                procLogin();
         }
     }

     }

如果我的条件失败,它必须调用procLogin()函数,但它不调用... ProcLogin只有一个回声......

if($process->g_User() && $process->g_Pass() && $process->LdapConn() 
   && process->LdapBind()) {
    return 'google';

使用此功能时......它甚至不会调用谷歌...

但是在我的后一段代码中,至少它正在调用......

我的要求是......如果用户名和密码错误,那么无论是否建立连接,它都会失败。

4 个答案:

答案 0 :(得分:3)

编辑:我的要求是......如果用户名和密码错误,那么无论是否建立连接,它都会失败。

所以,我认为g_User()和g_Pass()验证每个用户名和密码。 至于什么是'失败',我猜它是procLogin()。如果'fail'返回'google',则反过来放置身体。

如果我的假设是正确的(由于一个糟糕的问题规范,我再也无法确定),那么这就是你想要的

if($process->g_User() && $process->g_Pass()){
     if($process->LdapConn() && $process->LdapBind()){
        return 'google';
     }
} else {
     procLogin();
}

永远不要忘记缩进,尽量让问题尽可能清晰。例如,你所指的条件根本不清楚......现在我们都要猜测。

例如,如果您希望在条件失败时调用procLogin(),并且希望避免重复代码,则可以利用shortcircuiting来获得相同的行为:

if($process->g_User() && $process->g_Pass() && $process->LdapConn() 
   && process->LdapBind()) {
    return 'google';
} else {
    procLogin();
}

或者,如果LdapConn()失败,是否要调用procLogin()?然后你错放了括号:

if($process->g_User() && $process->g_Pass()){
     if($process->LdapConn()){
         if($process->LdapBind()){
            return 'google';
         }
     } else {
         procLogin();
     }
}

答案 1 :(得分:0)

您确定$process->LdapBind()是否返回false而不是$process->LdapConn()

如果我复制你的示例用true或false替换函数,那么只有$process->LdapBind()为假时它才能正常工作。

也许你想要:

if($process->g_User() && $process->g_Pass()){
         if($process->LdapConn()  &&  $process->LdapBind()){
                    return 'google';
             }else{
                     procLogin();
         }
     }

     }

答案 2 :(得分:0)

如果if($ process-> LdapConn())和if($ process-> LdapBind())都为真,它只会触发它们吗?

答案 3 :(得分:0)

如果你想在登录失败时调用procLogin():

if($process->g_User() && $process->g_Pass()){
 if($process->LdapConn()){
     if($process->LdapBind()){
            return 'google';
     }
 }


} else {
// Login has failed
procLogin();
 }