2009-07-22 6 views
-1
if($process->g_User() && $process->g_Pass()){ 
     if($process->LdapConn()){ 
      if($process->LdapBind()){ 

        return 'google'; 

      }else{ 
       procLogin(); 
     } 
    } 

    } 

Si mon état échoue, il doit appeler la fonction procLogin(), mais ce ne est pas appeler ... le ProcLogin a juste un écho ...autre condition de ne pas appeler une fonction en PHP

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

Lorsque vous utilisez ce ... il ne remet même pas Google ...

Mais dans mon code ci, au moins il appelait ...

mon exigence est ... si le nom d'utilisateur et mot de passe est faux, alors il devrait échouer indépendamment la connexion est établie ou non.

Répondre

0

Etes-vous sûr que $process->LdapBind() renvoie false et non $process->LdapConn()?

Si je copie votre exemple en remplaçant les fonctions par vrai ou faux, cela fonctionne comme prévu quand seulement $process->LdapBind() est faux.

Peut-être que vous voulez:

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

    } 
+0

Il ne fonctionne pas – Kevin

0

ne sera déclenchée que si les deux cas (Process-> ldapconn $()), et si (Process- $> LdapBind()) sont vraies, sont-ils?

3

EDIT: Mon exigence est ... si le nom d'utilisateur et le mot de passe est faux, alors il devrait échouer quelle que soit la connexion établie ou non. Donc, je suppose que g_User() et g_Pass() valident chacun le nom d'utilisateur et le mot de passe. En ce qui concerne 'fail', je suppose que c'est procLogin(). Si 'fail' renvoie 'google', placez les corps dans l'autre sens.

Si mes hypothèses sont correctes (ce qui, encore une fois, je ne peux pas être sûr à cause d'une spécification problème sucky), alors c'est ce que vous voulez

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

Ne jamais oublier indenter correctement, et essayer pour que vos questions soient aussi claires que possible. Par exemple, quelle est la condition à laquelle vous faites référence n'est pas claire du tout ... Maintenant, nous devons tous deviner.

Par exemple, si vous voulez procLogin() à être appelé à chaque fois qu'un état échoue, et que vous voulez éviter le code répéter, vous pouvez profiter de shortcircuiting pour obtenir le même comportement:

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

Ou, est-il que vous voulez que procLogin() soit appelé si LdapConn() échoue? Ensuite, vous avez égaré les supports:

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

ne fonctionne pas ... je reçois erreur – Kevin

+0

si je veux les la connexion échoue – Kevin

+0

Quelle partie de la clarification de vos questions n'avez-vous pas eu? Dites-nous quelle erreur avez-vous eu où? Prenez également le temps d'éditer votre question pour la clarifier. Que voulez-vous exactement? –

0

Si vous voulez procLogin() appelé si la connexion échoue:

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


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