Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] LDAP Abfrage mit ldap_search und ldap_get_entries, wann keine Resultate?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] LDAP Abfrage mit ldap_search und ldap_get_entries, wann keine Resultate?

    Guten Tag

    Ich versuche, eine LDAP Abfrage zu machen. Die soll, wenn sie kein Ergebnis liefert, eine Meldung ausgeben, dass keine Ergebnisse gefunden wurden.

    Die Abfrage funktioniert und gibt mir auch das aus was ich möchte, bei keinem passenden Ergebniss klappt es leider nicht und ich bekomme kein Ergebnis (leere Seite) zurück statt der Ausgabe "leere Variable, hier kommt anderes skript....."

    Hier einen Teil des Skripts:
    PHP-Code:

    $sr
    =ldap_search($ldapconn$dn$filter$justthese);
            
            
            
    //Prüfen ob Variable $sr gefüllt mit Suchresultat
             
    if ($sr=="FALSE"){
             
                echo 
    "leere Variable, hier kommt anderes skript.....";
             
             }
             else {
             
                
    $info ldap_get_entries($ldapconn$sr);
                    
                for (
    $i=0$i<$info["count"]; $i++) {
                    echo 
    $info[$i]["sn"][0];
                        if(
    $info 0){
                            echo 
    "<br/>";} 
                        else { echo 
    "<br/>" ;}
                    echo 
    $info[$i]["description"][0];
                }
            
            } 
    (Ich habe extra nicht alle Variablen hineinkopiert, wie gesagt, da der Rest bei erfolgreicher Abfrage ja funktioniert.)

    Die Frage: Wie muss ich die if Anweisung umschreiben, damit ich ausgegeben bekomme, wenn die Funktion "ldap_search()" kein Resultat liefert? Laut der PHP Seit sollte danach ja "FALSE" ausgegeben werden. Weil wenn es kein Ergebnis liefert sollte danach noch ein weiteres Verzeichnis abgefragt werden...

    oder muss ich die Funktion ldap_get_entries() auswerten?

    Könnt ihr mir weiterhelfen?

    Danke im Voraus!!!!

    Grüsse sTernLii


  • #2
    Nein, die Funktion liefert eine Boolean false, nicht so wie du annimmst einen String "FALSE".

    Kommentar


    • #3
      Danke für die Antwort. Wie kann ich für eine Boolean eine if Anweisung machen?
      Mit
      PHP-Code:
      if ($sr==FALSE){....} 
      funktioniert es leider auch nicht. Kannst du mir weiterhelfen?

      Kommentar


      • #4
        Was bekommst du denn überhaupt zurück? Sprich was sagt var_dump($sr)?

        Kommentar


        • #5
          var_dump($sr) gibt mir folgendes zurück: resource(3) of type (ldap result)
          Dies bei einer Abfrage wo ein Resultat gefunden werden kann sowie auch bei einer wo kein Resultat gefunden werden kann.

          Den Filter habe ich folgendermassen gesetzt
          PHP-Code:
          $filter="(|(telephoneNumber=156456431))"

          Kommentar


          • #6
            Sofern ldap_search() eine resource liefert gilt die Anfrage erstmal als erfolgreich, unabhängig davon ob und wieviele Resultate gefunden wurden.
            PHP-Code:
            if(! $sr) {
              
            //Fehlermeldung
            }
            else {
              
            //.. 
            Dann solltest du dir mal mit var_dump das Array $info ausgeben lassen und dir "count" näher anschauen. Da ich keine Ahnung von LDAP habe, kann ich nur vermuten dort steht 0 drin wenn du keine Resultate bekommst und du kannst dies auswerten.
            PHP-Klassen auf github

            Kommentar


            • #7
              Danke für die Antwort, hat mir wirklich geholfen

              Habe es jetzt so gelöst:

              PHP-Code:
              if ($info["count"]=="int(0)"){     
                     
              //Fehlermeldung
              }
              else {
                    
              // ....

              Kommentar


              • #8
                Da hast du aber Glück gehabt das dies funktioniert. Der Inhalt ist 0, int ist die Information vom var_dump das es sich eben um ein int (integer) handelt.
                PHP-Code:
                if ($info["count"]== 0){ 
                sieht besser aus...
                PHP-Klassen auf github

                Kommentar


                • #9
                  &nochmals danke Habe es sofort geändert

                  Kommentar


                  • #10
                    Der Vollständigkeit sei erwähnt, nachdem du offenbar einfach das Ergebnis von var_dump kopiert hast:
                    var_dump — Gibt alle Informationen zu einer Variablen aus
                    int(0) sind "alle Informationen", sprich Typ (int) und Inhalt, der Inhalt (den du mit ==(=) prüfst) ist 0.

                    Kommentar

                    Lädt...
                    X