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';
使用此功能时......它甚至不会调用谷歌...
但是在我的后一段代码中,至少它正在调用......
我的要求是......如果用户名和密码错误,那么无论是否建立连接,它都会失败。
答案 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();
}