ldap_modify Probleme

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

  • ldap_modify Probleme

    Hallo Leute,

    ich habe mal wieder ein Problem mit ldap, allerdings diesmal mit ldap_modify.

    ich Poste einfach mal meine 3 Scripte, vllt fällt jemandem etwas ein:

    index.php
    PHP-Code:
    <?php
    REQUIRE_ONCE("functions.php");

    ldap_con();
    ?>

    <html>
        <head>
            <title>Testseite</title>
        </head>
        <body bgcolor="#8a8a8a">
            <table border="1" width="100%">
                
                <?php            
                
    echo "<tr><td><h3>nicht Gesperrte User</h3></td></tr>";
                echo 
    "<tr>";
                
                for (
    $i 0$i <= $result["count"]; $i++) {
                    if (
    $result[$i]["useraccountcontrol"][0] == "66048")
                    {
                    
                    echo 
    "<td>".$result[$i]["cn"][0]."</td>";
                    echo 
    "<td><a href='auswerten.php?pwz=".$result[$i]["cn"][0]."'>PW zur&uuml;cksetzen</a></td>";
                    echo 
    "<td><a href='auswerten.php?loe=".$result[$i]["cn"][0]."'>L&ouml;schen</a></td>";
                    echo 
    "<td><a href='auswerten.php?sperren=".$result[$i]["cn"][0]."'>Sperren</a></td>";                
                    echo 
    "</tr>";
                    }
                }
                echo 
    "<tr><td><h3>Gesperrte User</h3></td></tr>";
                echo 
    "<tr>";
                
                
                for (
    $i 0$i<= $result["count"]; $i++) {
                if (
    $result[$i]["useraccountcontrol"][0] == "66050")
                {
                    echo 
    "<td>".$result[$i]["cn"][0]."</td>";
                    echo 
    "<td><a href='auswerten.php?pwz=".$result[$i]["cn"][0]."'>PW zur&uuml;cksetzen</a></td>";
                    echo 
    "<td><a href='auswerten.php?loe=".$result[$i]["cn"][0]."'>L&ouml;schen</a></td>";
                    echo 
    "<td><a href='auswerten.php?entsperren=".$result[$i]["cn"][0]."'>Entsperren</a></td>";
                    echo 
    "</tr>";            
                }
                }
                
    ?>
            </table>
        </body>
    </html>
    functions.php
    PHP-Code:
    <?php
    function ldap_con() {

    global 
    $result;
    global 
    $connectid;
    global 
    $basedn;

    $basedn "ou=User, dc=test, dc=local";
    $server "ldap://192.168.0.1";
    $port "389";
    $username "Administrator@test.local";
    $passwort "netzwerk";


    $connectid ldap_connect($server) or die ("Es konnte keine Verbindung zu $server herstestellt werden.");
    $bind ldap_bind($connectid$username$passwort) or die ("Die Authentifizierung ist Fehlgeschlagen.");

    ldap_set_option($connectidLDAP_OPT_PROTOCOL_VERSION3);
    ldap_set_option($connectidLDAP_OPT_REFERRALS0);

    $filter "(&(|(objectClass=user)(objectClass=contact))(objectCategory=person)(cn=*))";



    $search ldap_search($connectid$basedn$filter) or die ("Fehler.");
    $result ldap_get_entries($connectid$search);
    }
    ?>
    auswerten.php
    PHP-Code:
    <?php
    REQUIRE_ONCE("functions.php");
    ldap_con();
    ?>
    <?php
    if (isset($_GET["pwz"])) {
    //  Code  //
    header("location:index.php");
    }
    //-------------------------------------------------------------

    if (isset($_GET["loe"])) {
    //  Code  //
    header("location:index.php");
    }
    //-------------------------------------------------------------

    if (isset($_GET["sperren"])) {
    //  Code  //
    header("location:index.php");
    }
    //-------------------------------------------------------------

    if (isset($_GET["entsperren"])) {
    //  Code  //
    header("location:index.php");
    }
    //-------------------------------------------------------------

    ?>
    ich möchte auf der letzten seit (auswerten.php) die entprechenden sachen machen, um leute zu sperren / entsperren, zu löschen und das passwort zurückzusetzen und zwar dort, wo // Code // steht.

    nur fehlen mir die nötigen Denkansätze und dazu habe ich noch probleme mit ldap_modify..

    ich möchte anhand des namen des benutzers, diesen sperren/entsperren, löschen und das pw zurücksetzen. Den namen übergebe ich ja schon an die "auswerten.php"
    was muss ich tun, um anhand des namens die aktionen durchzuführen?

    Mit freundlichen Grüßen

    Jared

  • #2
    PHP: ldap_modify - Manual

    Bevor du das Rad Stück für Stück neu erfindest, wirf doch mal einen Blick auf existierende Lösungen, z.B. http://adldap.sourceforge.net/.
    Zuletzt geändert von onemorenerd; 23.11.2009, 15:57.

    Kommentar


    • #3
      da war ich ja auch schon ^^ allerdings gelingt es mir nicht, die function so abzuändern, das sie ohne connection auskommt, da ich ja schon eine habe.

      Kommentar


      • #4
        PHP-Code:
        function userchange($username$enable 1$ds) {
            
        $sr ldap_search($ds$ldapBase"(samaccountname=$username)");
            
        $ent ldap_get_entries($ds$sr);
            
        $dn $ent[0]['dn'];
            
        // Deactivate
            
        $ac $ent[0]['useraccountcontrol'][0];
            
        $disable = ($ac |  2); // set all bits plus bit 1 (=dec2)
            
        $enable =($ac & ~2); // set all bits minus bit 1 (=dec2)
            
        $userdata = array();
            if (
        $enable == 1$new $enable; else $new $disable//enable or disable?
            
        $userdata['useraccountcontrol'][0] = $new;
            
        ldap_modify($ds$dn$userdata); //change state
            
        $sr ldap_search($ds$ldapBase"(samaccountname=$username)");
            
        $ent ldap_get_entries($ds$sr);
            
        $ac $ent[0]['useraccountcontrol'][0];
            if ((
        $ac 2)==2$status 0; else $status 1;
            return 
        $status//return current status (1=enabled, 0=disabled)

        Ungetestet.

        Für $ds übergibst du dein Connection, also das, was du von ldap_connect() zurück bekommen hast.

        Kommentar


        • #5
          nochmals danke =) habe die function aber aufgehoben, da ich damit besser arbeiten kann :P
          aber das läuft schonmal (user deaktiviesen / aktivieren)

          für alle die auch so ein script suchen, poste ich mal meins:

          index.php
          PHP-Code:
          <?php
          REQUIRE_ONCE("functions.php");


          ?>

          <html>
              <head>
                  <title>Testseite</title>
              </head>
              <body bgcolor="#8a8a8a">
                  <table border="0" width="100%">
                      
                      <?php            
                      
          echo "<tr><td><h3>nicht Gesperrte User</h3></td></tr>";
                      echo 
          "<tr>";
                      
                      for (
          $i 0$i <= $result["count"]; $i++) {
                          if (
          $result[$i]["useraccountcontrol"][0] == "66048")
                          {
                          
                          echo 
          "<td>".$result[$i]["samaccountname"][0]."</td>";
                          echo 
          "<td><a href='functions.php?pwz=".$result[$i]["samaccountname"][0]."'>PW zur&uuml;cksetzen</a></td>";
                          echo 
          "<td><a href='functions.php?loe=".$result[$i]["samaccountname"][0]."'>L&ouml;schen</a></td>";
                          echo 
          "<td><a href='functions.php?sperren=".$result[$i]["samaccountname"][0]."'>Sperren</a></td>";                
                          echo 
          "</tr>";
                          }
                      }
                      echo 
          "<tr><td><h3>Gesperrte User</h3></td></tr>";
                      echo 
          "<tr>";
                      
                      
                      for (
          $i 0$i<= $result["count"]; $i++) {
                      if (
          $result[$i]["useraccountcontrol"][0] == "66050")
                      {
                          echo 
          "<td>".$result[$i]["samaccountname"][0]."</td>";
                          echo 
          "<td><a href='functions.php?pwz=".$result[$i]["samaccountname"][0]."'>PW zur&uuml;cksetzen</a></td>";
                          echo 
          "<td><a href='functions.php?loe=".$result[$i]["samaccountname"][0]."'>L&ouml;schen</a></td>";
                          echo 
          "<td><a href='functions.php?entsperren=".$result[$i]["samaccountname"][0]."'>Entsperren</a></td>";
                          echo 
          "</tr>";            
                      }
                      }
                      
          ?>
                  </table>
              </body>
          </html>
          functions.php
          PHP-Code:
          <?php
          $basedn 
          "ou=User, dc=test, dc=local";
          $server "ldap://192.168.178.11";
          $port "389";
          $username "Administrator@test.local";
          $passwort "//-- Verrat ich nicht ^^ --//";


          $connectid ldap_connect($server) or die ("Es konnte keine Verbindung zu $server herstestellt werden.");

          $bind ldap_bind($connectid$username$passwort) or die ("Die Authentifizierung ist Fehlgeschlagen.");


          ldap_set_option($connectidLDAP_OPT_PROTOCOL_VERSION3);
          ldap_set_option($connectidLDAP_OPT_REFERRALS0);

          $filter "(&(|(objectClass=user)(objectClass=contact))(objectCategory=person)(cn=*))";

          $search ldap_search($connectid$basedn$filter) or die ("Fehler.");
          $result ldap_get_entries($connectid$search);


          if (isset(
          $_GET["pwz"])) {

          header("location:index.php");
          }


          if (isset(
          $_GET["loe"])) {

          header("location:index.php");
          }


          if (isset(
          $_GET["sperren"])) {
          $username $_GET["sperren"];

          $sr ldap_search($connectid$basedn"(samaccountname=$username)");
              
          $ent ldap_get_entries($connectid$sr);
              
          $dn $ent[0]['dn'];
              
          // Deactivate
              
          $ac $ent[0]['useraccountcontrol'][0];
              
          $disable = ($ac |  2); // set all bits plus bit 1 (=dec2)
              
          $userdata = array();
              
          $new $disable//enable or disable?
              
          $userdata['useraccountcontrol'][0] = $new;
              
          ldap_modify($connectid$dn$userdata); //change state
             

          header("location:index.php");
          }


          if (isset(
          $_GET["entsperren"])) {
          $username $_GET["entsperren"];

          $sr ldap_search($connectid$basedn"(samaccountname=$username)");
              
          $ent ldap_get_entries($connectid$sr);
              
          $dn $ent[0]['dn'];
              
          // Deactivate
              
          $ac $ent[0]['useraccountcontrol'][0];
              
          $enable =($ac & ~2); // set all bits minus bit 1 (=dec2)
              
          $userdata = array(); 
              
          $new $enable//enable or disable?
              
          $userdata['useraccountcontrol'][0] = $new;
              
          ldap_modify($connectid$dn$userdata); //change state

          header("location:index.php");
          }

          ?>

          Kommentar


          • #6
            kann ich das pw jetzt auch über ldap_modify auf ein standartpw zurücksetzen?

            welchen der folgenen array assoziationen muss ich nehmen?


            • objectclass
            • cn
            • sn
            • description
            • physicaldeliveryofficename
            • telephonenumber
            • givenname
            • distinguishedname
            • instancetype
            • whencreated
            • whenchanged
            • displayname
            • usncreated
            • memberof
            • usnchanged
            • wwwhomepage
            • name
            • objectguid
            • useraccountcontrol
            • badpwdcount
            • codepage
            • countrycode
            • badpasswordtime
            • lastlogoff
            • lastlogon
            • pwdlastset
            • primarygroupid
            • objectsid
            • admincount
            • accountexpires
            • logoncount
            • samaccountname
            • samaccounttype
            • userprincipalname
            • objectcategory
            • mail

            würde mich auch wieder über ein kleines script freuen ^^ (aber kein muss :P)

            Kommentar

            Lädt...
            X