Der Martin: Ldap_connect wenn Server nicht erreichbar

Beitrag lesen

Hi,

ldap_connect() will always return a resource as it does not actually connect but just initializes the connecting parameters. The actual connect happens with the next calls to ldap_* funcs, usually with ldap_bind().

Also wird der eigentliche Connect erst bei ldap_bind() hergestellt und ldap_connect bringt immer einer Ressource id zurück.

ja, so verstehe ich das auch.

$bd = @ldap_bind($ad, $USER, $userpassword) ;

if($bd === false){
$ldaperror = ldap_errno($ad);
echo " der ldap error ist $ldaperror <br>";
...


>   
> Das Problem ist hier nun aber das der Bind ja nicht klappt. Ich bekomme aber einer Errorno "-1" zurück und nicht wie ich erwartet hatte eine 81 wie ich es an anderer Stelle gelesen habe.  
  
Beziehst du dich mit dieser Erwartung auf den [Nutzerkommentar zu ldap_errno()](http://us3.php.net/manual/en/function.ldap-errno.php#20665)? Dort steht aber für 0x51 ausdrücklich drüber: "Used by some APIs". Mit anderen Worten: Dieser Code wird nicht von allen Implementierungen verwendet.  
  
Übrigens ist der typsichere Vergleich hier nicht nötig, weil ldap\_bind() immer ein boolsches Ergebnis liefert. Ein schlichtes `if (!$bd) {...}`{:.language-php} ist also völlig ausreichend und angenehmer zu lesen.  
  
Dein Fehlercode -1 ist zwar in dieser Liste nicht aufgeführt, aber was hindert dich daran, beim Auftreten \*irgendeines\* Fehlers bei ldap\_bind() zu konstatieren, der Server sei nicht erreichbar? Sicher, die Gründe dafür sind vielfältig, aber ist das an der Stelle relevant?  
  

> Die Frage ist also wie man das am besten abfangen kann?  
  
So, wie du es bereits tust. Du kannst ja auch noch [ldap_err2str()](http://us3.php.net/manual/en/function.ldap-err2str.php) bemühen, um den Fehler in Prosa zu erhalten.  
  
So long,  
 Martin  

-- 
Die letzten Worte des Fallschirmspringers:  
ELENDE SCHEISSMOTTEN!!  
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(