Или ткните носом, где можно взять готовый.


Код: Выделить всё
<html>
<body>
<form method="POST">
<table>
<tr><td>Enter your login: </td><td><input type="text" name="login"></td></tr>
<tr><td>Enter your old password: </td><td><input type="password" name="oldpass"></td></tr>
<tr><td>Enter your new password: </td><td><input type="password" name="newpass1"></td></tr>
<tr><td>Retype your new password: </td><td><input type="password" name="newpass2"></td></tr>
</table>
<input type="submit" value="OK!" name="submitMe">
</form>
<?php
if(isset($_POST['submitMe']))
{
$username=$_POST['login'];
$oldpassword=$_POST['oldpass'];
$newpassword=$_POST['newpass1'];
$newpassword2=$_POST['newpass2'];
print"Hello, $username!\n";
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$ldapconn = ldap_connect('ldaps://my.domain.com/',636);
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
$ldapuser="domain\admuser";
$ldappwd="admpwd";
// search for user
ldap_bind($ldapconn, $ldapuser, $ldappwd);
$res_id = ldap_search( $ldapconn, "DC=my,DC=domain,DC=com", "sAMAccountName=$username");
if ($res_id) {
$entry_id = ldap_first_entry($ldapconn, $res_id);
if($entry_id){
$user_dn = ldap_get_dn($ldapconn, $entry_id);
if ($user_dn) {
$ldapbind = ldap_bind($ldapconn, $user_dn, $oldpassword);
// check if the old password allows a successfull login
if($ldapbind) {
if(strcmp($newpassword, $newpassword2)==0){
// create the unicode password
$newpassword = "\"" . $newpassword . "\"";
$newPass = mb_convert_encoding($newpassword, "UTF-16LE");
//rebind as admin to change the password
ldap_bind($ldapconn, $ldapuser, $ldappwd);
$pwdarr = array('unicodePwd' => $newPass);
print "<p class='error'>$user_dn</p>\n";
if(ldap_modify ($ldapconn, $user_dn, $pwdarr)) {
print "<p class='success'>Change password succeded.</p>\n";
} else {
print "<p class='error'>Change password failed.</p>\n";
}
}else{
print "<p class='error'>New password must be entered the same way twice.</p>\n";
}
}else{
print "<p class='error'>Wrong user name or password.</p>\n";
}
} else {
print "<p class='error'>Couldn't load user data.</p>\n";
}
} else {
print "<p class='error'>Couldn't find user data.</p>\n";
}
} else {
print "<p class='error'>Username was not found.</p>\n";
}
if(ldap_error($ldapconn)!="Success"){
print "<p class='error'>LDAP Error:<br />\n";
var_dump(ldap_error($ldapconn));
print "</p>\n";
}
@ldap_close($ldapconn);
}
?>
</body>
</html>