рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░
AD рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛
, рдпрджрд┐ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ php рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
ldap рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд╣рд▓реЗ рдХреБрдЫ рд╕рд░реНрд╡рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рдЕрднреА рднреА рд╣реЛрддрд╛ рд╣реИ - рдХрдВрдкрдиреА рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реИ рдФрд░ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдкреНрд░рдмрдВрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕реЗ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд╣реЗрдВ рддреЛ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ AD рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ, MySQLред AD рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрд░реНрдордЪрд╛рд░реА рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрдорд╛рдирддрдГ рд╡реЗрдмрд░ рдкрд░ рдкрдбрд╝реЗрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдВ рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓реЗрдВ рдкреИрджрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ AD рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдХрдВрдкрдиреА рдХреЗ рдврд╛рдВрдЪреЗ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрдЧрд╛, рддреЛ рдЗрдирдкреБрдЯ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдбреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдХрдВрд╕реЛрд▓ рдФрд░ рд╡реАрдмреАрдПрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдбреЗрдЯрд╛ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг php рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХрд┐ рдХрд┐рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ рдФрд░ рдХрд┐рди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕рдмрд╕реЗ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ ldap_add () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓
рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ ред
рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ - рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдПрдХ рдФрд░ рдкреВрд░реЗ "рдмреЙрдбреА рдХрд┐рдЯ" рдХреЗ рд╕рд╛рде, рддрд╛рдХрд┐ рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХреЗрдВред
рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реИ, рдПрдХреНрд╕реЗрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓рд┐рдЦрд┐рдд рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рд╣реИред рдкрд╣рд▓рд╛ рдЪрд░рдг - рдХрдиреЗрдХреНрд╢рди - рдореИрдиреБрдЕрд▓ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
$ldap_host = "xxx.local";
рдЕрдм рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреЗ рдбрд┐рд╡реАрдЬрдиреЛрдВ рдХреЗ рдПрдХ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ:
function build_tree($connect, $ou = '', $base_dn = 'OU=!Users_all,DC=xxx,DC=local') { $specific_dn = $base_dn; if ('' != $ou) {$specific_dn = 'OU='.$ou.','.$base_dn;} $filter = 'ou=*'; $justthese = array("ou"); $sr = ldap_list($connect, $specific_dn, $filter, $justthese); $info = ldap_get_entries($connect, $sr); $result = ''; for ($i=0; $i < $info["count"]; $i++) { $specific_ou = $info[$i]["ou"][0]; $result .= '<ul>'; $result .= '<li><input type="radio" name="dep" value="OU='.$specific_ou.','.$specific_dn.'" title="'.$specific_ou.'" /> '.$specific_ou; $result .= build_tree($connect, $specific_ou, $specific_dn); $result .= '</li>'; $result .= '</ul>'; } return $result; }
рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рд╣рдо рддреБрд░рдВрдд рдЙрди рдлрд╛рд░реНрдо рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдлрд╝рдВрдХреНрд╢рди рдЦреБрдж рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдХреЗ рдШреЛрдВрд╕рд▓реЗ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд░реВрдк рд▓рд┐рдЦреЗрдВрдЧреЗ:
echo ' <form method="POST" action="'.$_SERVER['REQUEST_URI'].'"> <h3></h3> <input type="hidden" name="new_emp" value="1" /> <input type="text" name="family_name" value="" size="20" /> <input type="text" name="first_name" value="" size="20" /> <input type="text" name="fathers_name" value="" size="20" /> <br/> <h3></h3> <input type="text" name="position" value="" size="40" /> <br/> <h3> </h3> <input type="text" name="tel_num" value="+7(999) 999-9999" size="20" /> <h3></h3> <div class="tree"> '.build_tree($connect).' </div> <br/> <input type="submit" value="" /> </form>';
рдФрд░ рдЕрдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ: рдЗрдирдкреБрдЯ рдХреА рдЬрд╛рдБрдЪ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
$errors = ''; if(isset($_POST['new_emp'])) { foreach($_POST as $key => $value) { if('' == $value) {$errors .= ' '.$key.' <br/>'; break;} else {$$key = $value;} } if(!isset($_POST['dep'])) {$errors .= ' ┬л┬╗ <br/>';} if('' == $errors) { $trans_family_name = translit($family_name); $trans_first_name = translit($first_name); $trans_fathers_name = translit($fathers_name); $account = $trans_family_name.substr($trans_first_name, 0, 1).substr($trans_fathers_name, 0, 1); $dn = 'CN='.$family_name.' '.$first_name.' '.$fathers_name.','.$dep;
рдмреЗрд╢рдХ, рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд - рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдХреНрдпрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд░ рд╣реИрдВ:
$dn = 'CN= ,OU=!Users_all,DC=xxx,DC=local';
рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд╕рдм рдХреБрдЫ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ (+ рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛рд░реНрдпреЛрдВ): <style> .tree {height:500px; overflow-y:scroll; border:1px solid