Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] LDAP - Zugriff auf AD -- Resource id#2

Einklappen

Neue Werbung 2019

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

  • [Erledigt] LDAP - Zugriff auf AD -- Resource id#2

    Hallo @ all,

    fange frisch an PHP zu schreiben und habe folgendes Problem.

    Ich möchte eine Seite schreiben, wo sich Mitarbeiter meiner Firma einloggen können und gegen eine bestehende Domäne verifiziert werden. Das ganze soll also via ldap_connect vollzogen werden doch bekomme ich regelmäßig einen resource id#3 Fehler. Diverses debuggen bringt keinen Erfolg und daher suche ich euren Rat. Hier meine ldap.php:

    <?php

    $user = "XXXX";
    $passwort = "XXX";
    $server = "Server.X.XX.net";
    $port = "389";

    echo exec ("ping Server");

    checkuser ($user,$passwort,$server,$port);

    function checkuser ($user,$passwort,$server,$port)
    {
    $connection= ldap_connect( $server, $port) or die("Keine Verbindung zu {
    $server} m&ouml;glich");
    echo $connection;
    if ($connection)
    {
    $dn = "cn=$user,cn=DE-S13/Users, DC=[X], DC=[XX.net]";
    $binding = @ldap_bind($connection,$dn,$user,$passwort);

    echo "user: " . $user;
    echo "-----passwort: " . $passwort;
    echo "-----server: " . $server;
    echo "-----port: " . $port;
    echo "-----bindung: " . $binding;
    if ($binding)
    {
    return true;

    echo'
    <html>
    <head>
    <title>Test erfolgreich</title>
    </head>
    </html>
    ';
    }
    else
    {
    echo 'erfolglos';
    return false;
    }
    }
    }

    ?>


    Vielen Dank schon vorher für eure Unterstützung. Mit Sicherheit für euch keine große Sache aber als blutiger Anfänger lege ich mir die Karten. Zumal man nichts gescheites zum Fehler "Resource id#3" und PHP findet. Es sei denn man macht einen SQL Connect aber um den geht es ja nicht

  • #2
    Zitat von burzk Beitrag anzeigen
    Zumal man nichts gescheites zum Fehler "Resource id#3" und PHP findet.
    Soso... anhand deiner Beschreibung kann man aber auch nicht viel sagen. Wo tritt der Fehler denn auf (Codezeile!) dazu bitte die exakte Fehlermeldung posten.
    error_reporting ganz hoch schrauben... und bitte bitte bitte: Nimm das @ vor Funktionsaufrufen weg, es unterdrückt Fehlerausgaben - du WILLST aber Fehlermeldungen sehen!

    Verwende bitte auch die BB-Codes für PHP (dieser lustige Knopf )
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      $connection ist eine Resource Kennung, da du sie per "echo" ausgibst kommt so etwas wie "Resource id#3" dabei raus. Das ist normalerweise kein Fehler.

      Kommentar


      • #4
        Vielen Dank vorerst für eure Hinweise! Habe das Reporting aktiviert und bekommen die Rückmeldung:
        Browser: Notice: Undefined variable: ldapconn in C:\xampp\htdocs\03_ldap.php on line 17

        PHP-Editor: FatalError: Call to undefined function ldap_connect()

        Würde es so deuten, dass die Funktion ldap_connect nicht aufgerufen werden kann?


        PHP-Code:
        <?php

        $user 
        "XX";
        $passwort "XX";
        $server "XX";                                                // ldap servers
        $port "389";                                                  // Portnummer ldap servers

        error_reporting(E_ALL E_STRICT);

        $ldapconn ldap_connect$server$port );

        checkuser ($user,$passwort,$server,$port);

        function 
        checkuser ($user,$passwort,$server,$port)
            {
                if (
        $ldapconn)
                      {
                         
        $dn "OU=Users,OU=DE-XX,DC=X,DC=XX,DC=XX]";
                         
        $binding ldap_bind($connection,$dn,$user,$passwort);

                if (
        $binding)
             {
                echo
        '
                <html>
                    <head>
                    <title>Test erfolgreich</title>
                    </head>
                </html>'
        ;
                return 
        true;
                }
                    else
                {
                    echo 
        'erfolglos';
                    return 
        false;
                }
            }
        }

        ?>

        Danke euch

        Kommentar


        • #5
          Äh ja die Funktion existiert nicht, also kann sie auch nicht aufgerufen werden.

          Kommentar


          • #6
            Genau, weil du sie hier nicht deklarierst, bzw. includest...
            ACHTUNG!!! SIGNATUR!!!
            PHP-Code:
            var_dump($gehirn); exit; 
            0 ??? WTF ? nervtag.de | freutag.net | friendmetr.com

            Kommentar


            • #7
              Was? ldap_connect ist eine Funktion in der LDAP Extension. Die muss weder deklariert noch includet werden. Die Extension muss installiert werden.

              Kommentar


              • #8
                habe aber die Funktion extension=php_ldap.dll in php.ini aktiviert...
                laut parser kann doch die Funktion abgearbeitet werden..

                Wo genau muss ich sie platzieren bzw. aufführen?!

                Kommentar


                • #9
                  Nein sie existiert noch nicht. Hast du den Webserver neu gestartet? Schau mal in phpinfo() ob LDAP wirklich geladen wurde!

                  Kommentar


                  • #10
                    Die Fehlermeldung passt nicht zum Codestück (auf Zeile 17 ist nix, was diesen Fehler auslösen könnte).

                    Innerhalb der Funktion wird $connection verwendet, das aber in der Funktion nicht deklariert wurde.
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Guten Morgen Forum,

                      den Webserver (Apache) hatte ich mehrmals neu gestartet und auch $connection umbenannt.

                      Code mit selbigen Fehler schaut dennoch aus wie folgt:
                      (Notice: Undefined variable: ldapconn in C:\xampp\htdocs\03_ldap.php on line 17)

                      Wie muss ich die Variable "ldapconn" definieren, damit sie geparsed werden kann?

                      PHP-Code:
                      <?php

                      $user 
                      "xx";
                      $passwort "xx";
                      $server "xx";                                         // ldap servers
                      $port "389";                                          // Portnummer ldap servers

                      error_reporting(E_ALL E_STRICT);

                      $ldapconn ldap_connect$server$port );

                      checkuser ($user,$passwort,$server,$port);

                      function 
                      checkuser ($user,$passwort,$server,$port)
                          {
                              if (
                      $ldapconn)
                                    {
                                       
                      $dn "[OU=Users,OU=xx,DC=x,DC=xx,DC=xx]";
                                       
                      $binding ldap_bind($ldapconn,$dn,$user,$passwort);

                              if (
                      $binding)
                           {
                              echo
                      '
                              <html>
                                  <head>
                                  <title>Test erfolgreich</title>
                                  </head>
                              </html>'
                      ;
                              return 
                      true;
                              }
                                  else
                              {
                                  echo 
                      'erfolglos';
                                  return 
                      false;
                              }
                          }
                      }

                      ?>

                      Kommentar


                      • #12
                        $ldapconn ist INNERHALB der Funktion undefiniert.

                        Übergib $ldapconn der Funktion als Parameter (oder, die unschöne Lösung, deklariere $ldapconn in der Funktion global)
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          habe in phpinfo() nachgeschaut:

                          ldap
                          LDAP Support enabled
                          RCS Version $Id: ldap.c 287897 2009-08-30 15:33:59Z iliaa $
                          Total Links 0/unlimited
                          API Version 3001
                          Vendor Name OpenLDAP
                          Vendor Version 20409

                          Directive Local Value Master Value
                          ldap.max_links Unlimited Unlimited

                          Kommentar


                          • #14
                            Sehr schön. Hat aber nichts mit deiner Problematik zu tun.

                            Beschäftige dich mit den Grundlagen, insbesondere mit Funktionen und Gültigkeitsbereichen von Variablen...
                            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                            Kommentar


                            • #15
                              habe es nun mit anonymen binden probiert und bekomme ein "erfolgreich" zurück!

                              PHP-Code:

                              <?php

                              $user 
                              "xx";
                              $passwort "xx";
                              $server "xxx";                                        // ldap servers
                              $port "389";                                          // Portnummer ldap servers

                              error_reporting(E_ALL E_STRICT);

                              checkuser ($user,$passwort,$server,$port);

                              function 
                              checkuser ($user,$passwort,$server,$port)
                                  {
                                          
                              $ldapconn ldap_connect($server$port);
                                          if (
                              $ldapconn)
                                      {
                                          
                              $binding ldap_bind($ldapconn);

                                      if (
                              $binding)
                                      {
                                              echo
                              '
                                              <html>
                                              <head>
                                              <title>Test erfolgreich</title>
                                              </head>
                                              </html>'
                              ;
                                      return 
                              true;
                                      }
                                      else
                                      {
                                              echo 
                              'erfolglos';
                                      return 
                              false;
                                      }
                                  }
                              }

                              ?>
                              werde jetzt nur noch versuchen, User und OU auszulesen und dann sollte es für das 1. genügen! Vielen Dank euch für die tolle Unterstützung.

                              PS: Grundlagen werden parallel gepauckt / Lerning by writing

                              Kommentar

                              Lädt...
                              X