2016-09-30 65 views
1

我每隔幾天尋找我的問題,我嘗試了許多解決方案,我沒有發現添加密碼的用戶... :(使用LDAP PHP

我想創建一個使用ldap_add與PHP的用戶。沒有做工精細啓用帳戶並沒有密碼你會發現下面的代碼

你能幫助我,請

配置:? PHP 5.6 的Windows Server 2012 R2與AD

我可以在使用$info["useraccountcontrol"]=544;時啓用帳戶,但該帳戶沒有密碼...用戶必須使用沒有密碼的對角線並在第一次連接時輸入新密碼。 *

我試圖用$info['userPassword']添加密碼,並在512昌德useraccountontrol和我得到這個錯誤:

ldap_add():地址:服務器是不願意執行

這裏是我的代碼:

<?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"; 
} 
?> 

非常感謝。 PS:這是我學校的假社會。 :p

回答

0

如果是AD,您可能需要使用安全的LDAP連接。您需要致電ldap_connect('ldaps://192.168.1.1:<port of the AD>');。使用兩個參數調用ldap_connect已棄用,應予以避免。將它與LDAP-URI一起使用!

您也可以省略ldap_connect周圍的if…else,因爲它在幾乎所有情況下都會返回true。並且返回值並不意味着與服務器的連接實際上是建立的。首先在需要連接的第一個ldap_-command上建立連接,該連接通常爲ldap_bind

然後你可能想看看Change AD password using PHPIssue updating AD password using PHPChange AD Password using PHP/COM/ADSI/LDAP