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

        return 'google'; 

      }else{ 
       procLogin(); 
     } 
    } 

    } 

Wenn mein Zustand nicht anrufen, muss er die procLogin() Funktion aufrufen, aber es ist nicht nennen ... die ProcLogin hat nur ein Echo ...Wenn sonst Zustand keine Funktion in PHP

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

wenn diese mit ... es nicht einmal dem google nicht nennen ...

Aber in meinem letzteren Code, zumindest war es nennen ...

Meine Forderung ist ..., wenn der Benutzername und das Passwort ist falsch, dann sollte es trotzdem scheitern Die Verbindung ist hergestellt oder nicht.

Antwort

0

Sind Sie sicher, dass false zurückgibt und nicht $process->LdapConn()?

Wenn ich Ihr Beispiel nach dem Ersetzen der Funktionen mit true oder false kopiere, funktioniert es wie erwartet, wenn nur $process->LdapBind() falsch ist.

Vielleicht möchten Sie:

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

    } 
+0

Es ist nicht – Kevin

0

es wird nur ausgelöst, wenn beide if ($ prozess-> LdapConn()) und if (prozess- $> LdapBind()) wahr sind, sind sie?

3

EDIT: Meine Anforderung ist ... wenn der Benutzername und das Passwort falsch ist, dann sollte es fehlschlagen, unabhängig davon, ob die Verbindung hergestellt ist oder nicht.

Also nehme ich an, dass g_User() und g_Pass() jeweils den Benutzernamen und das Passwort validieren. Was ist "scheitern" Ich denke, es ist procLogin(). Wenn "fail" (Fehler) zurückgegeben wird, "google", lege die Körper anders herum.

Wenn meine Annahmen korrekt sind (was wiederum ich nicht sicher sein kann, der aufgrund eines sucky Problems spec), dann ist es das, was Sie wollen

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

nie richtig einrücken vergessen und versuchen, um Ihre Fragen so klar wie möglich zu machen. Zum Beispiel ist die Bedingung, auf die Sie verweisen, überhaupt nicht klar ... Jetzt müssen wir alle raten.

Zum Beispiel, wenn Sie procLogin() wollen aufgerufen werden, wenn eine Bedingung fehlschlägt, und wollen Code Wiederholung vermeiden Sie die Vorteile von shortcircuiting nehmen das gleiche Verhalten zu erhalten:

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

Oder ist es dass procLogin() aufgerufen werden soll, wenn LdapConn() fehlschlägt? Dann haben Sie verlegt die Klammern:

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

nicht funktioniert arbeiten ... ich bekomme Fehler – Kevin

+0

ich sie will, wenn login fails – Kevin

+0

Welchen Teil der Klärung Ihrer Fragen haben Sie nicht bekommen? Sagen Sie uns, welchen Fehler Sie wo bekommen haben! Nehmen Sie sich auch die Zeit, Ihre Frage zu bearbeiten, um sie zu klären. Was genau willst du? –

0

Wenn Sie procLogin wollen() aufgerufen, wenn die Anmeldung fehlschlägt:

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


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