Или ткните носом, где можно взять готовый.
Web морда для смены пароля.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
FBIAgent
- проходил мимо
- Сообщения: 7
- Зарегистрирован: 2008-02-13 10:21:08
Web морда для смены пароля.
Помогите скриптом на пхп (или перл) для смены пароля в виндовом AD, чтобы пользователь мог зайти на страницу и сам поменять пароль.
Или ткните носом, где можно взять готовый.
А то в нете все платные. 
Или ткните носом, где можно взять готовый.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: Web морда для смены пароля.
я вот нашел это, может оно http://search.cpan.org/~prefect/Win32-A ... 04/User.pm
поищи тут к perl http://search.cpan.org/search?m=all&q=A ... ctory&s=11 может как-то через ldap можно?
поищи тут к perl http://search.cpan.org/search?m=all&q=A ... ctory&s=11 может как-то через ldap можно?
-
FBIAgent
- проходил мимо
- Сообщения: 7
- Зарегистрирован: 2008-02-13 10:21:08
Re: Web морда для смены пароля.
ProFTP, спасибо за ответ, но за выходные путем проб и ошибок и великого и могучего... конечно же интернета
удалось написать вот такой рабочий скрипт:
Ругайте, правьте, советуйте, дополняйте. Приму любую критику. 
Код: Выделить всё
<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>


