如果想要在 Windows 的 Active Directory 中停用帳戶,
您可以嘗試這樣做(它在 Win2k 環境中對我有效)
(在 "$ldapBase" 中應將 foo.bar 取代為正確的
網域,例如,如果您的網域是 phpfreackx.com,則為 "DC=phpfreackx,DC=com")
domctrl = 網域控制站
domadlogin = 網域管理員登入
domadpw = 網域管理員密碼
username = 使用者帳戶的登入名稱(例如 "john.doe")
enable = 1(如果要啟用它,如果應停用則為 0)
<?php
function userchange($username,$enable=1,$domadlogin,$domadpw,$domctrl)
{
$ldapServer = $domctrl;
$ldapBase = 'DC=foo,DC=bar';
$ds = ldap_connect($ldapServer);
if (!$ds) {die('無法連線到 LDAP 伺服器');}
$ldapBind = ldap_bind($ds,$domadlogin,$domadpw);
if (!$ldapBind) {die('無法繫結到 LDAP 伺服器');}
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
$sr = ldap_search($ds, $ldapBase, "(samaccountname=$username)");
$ent= ldap_get_entries($ds,$sr);
$dn=$ent[0]["dn"];
$ac = $ent[0]["useraccountcontrol"][0];
$disable=($ac | 2); $enable =($ac & ~2); $userdata=array();
if ($enable==1) $new=$enable; else $new=$disable; $userdata["useraccountcontrol"][0]=$new;
ldap_modify($ds, $dn, $userdata); $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;
ldap_close($ds);
return $status; }
?>