2016-09-30 3 views
1

ich alle Tage für mein Problem gesucht, ich habe viele Lösungen ausprobiert und fand ich nicht ... :(hinzufügen Passwort Benutzer über LDAP PHP

Ich möchte einen Benutzer erstellen mit PHP ldap_add. Adaequat ohne Konto aktivieren und ohne Passwort Sie den Code unten finden

Sie mir helfen können, bitte

Config:..? PHP 5.6 Windows Server 2012 R2 mit AD

Ich kann ein Konto aktivieren, wenn ich $info["useraccountcontrol"]=544; verwende, aber das Konto ist nicht mit einem Passwort ... Benutzer muss loggon ohne Passwort und geben Sie sein neues Passwort bei der ersten Verbindung ein. *

Ich habe versucht, ein Passwort mit $info['userPassword'] und Chand useraccountontrol bei 512 und ich bekomme diese Fehlermeldung hinzuzufügen:

ldap_add(): In: Der Server ist nicht bereit,

Hier auszuführen ist mein code:

<?php 
$name = htmlspecialchars($_POST["name_build"]); 
$lastname = htmlspecialchars($_POST["lastname_build"]); 
$department = utf8_encode(htmlspecialchars($_POST["department_build"])); 
$title = utf8_encode(htmlspecialchars($_POST["title_build"])); 
$dn="CN=$name OU=Users, o=Domocom, c=net"; 

$ds = ldap_connect("192.168.1.1",389); 
if ($ds) { 

    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); // IMPORTANT 
    ldap_bind($ds, "[email protected]", "password"); 

    // Prépareles données 
    $cn = $info["cn"] = "$lastname $name"; 
    $info["sn"]="$name"; 
    $info["givenname"]="$lastname"; 
    $info["displayname"]="$lastname $name"; 
    $info["name"]="$lastname $name"; 
    $info["userprincipalname"]= "[email protected]"; 
    $info["samaccountname"]= "$lastname.$name"; 
    $info["title"]="$title"; 
    $info["department"]="$department"; 
    $info["mail"]="[email protected]"; 
    $info["postalcode"]="69009"; 
    $info["objectClass"][0]="user"; 
    //$info['userPassword'] = "password"; 
    //$info["useraccountcontrol"]=544; 

    $r = ldap_add($ds,"CN=$cn,OU=Users,OU=Direction,OU=Domocom-SP,DC=domocom,DC=net", $info); 
    ldap_close($ds); 
} else { 
    echo "unable to connect to ldap server"; 
} 
?> 

Vielen Dank.

PS: Es ist eine falsche Gesellschaft für meine Schule. : p

Antwort

0

Wenn es eine AD ist, müssen Sie möglicherweise eine sichere LDAP-Verbindung verwenden.

Dafür müssen Sie ldap_connect('ldaps://192.168.1.1:<port of the AD>'); anrufen. Der Aufruf von ldap_connect mit zwei Parametern ist veraltet und sollte vermieden werden. Benutze es mit einem LDAP-URI!

Sie können auch die if…else um die ldap_connect weglassen, da es in fast allen Fällen wahr zurückgibt. Und ein true Rückgabewert bedeutet nicht, dass eine Verbindung zum Server tatsächlich hergestellt ist. Eine Verbindung wird zuerst mit dem ersten ldap_-Befehl hergestellt, der eine Verbindung benötigt, die typischerweise ldap_bind ist.

Und dann könnten Sie einen Blick auf Change AD password using PHP, Issue updating AD password using PHP und Change AD Password using PHP/COM/ADSI/LDAP

haben wollen