ldap.php -- выводит список юзеров ввиде таблички
Код: Выделить всё
<?php
$fields = array("cn", "mail", "givenName", "sn", "uid", "o"); // Поля какие надо брать
$filter = "cn=*"; // фильтр поиска (т.е. все записи)
$base_dn = "ou=mail, dc=kk, dc=com"; // база поиска
$ldap_user ="cn=broot, dc=kk, dc=com"; // учетка админа
$ldap_pass = ""; // мегапароль админа
$ldap_host = "192.168.0.200"; // хост с LDAP
$result = '';
$names=array();
$users=array();
$connect = ldap_connect($ldap_host);
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($connect, $ldap_user, $ldap_pass);
$read = ldap_search($connect, $base_dn, $filter, $fields);
print '<table border="0" width="100%" cellspacing="1" cellpadding="2" style="font : 11px verdana;">'
.'<tr bgcolor="#B9CCDF"><td><p>Фамилия Имя Отчество</p></td><td><p>Адрес</p></td><td></td><td></td></tr>';
if ($info = ldap_get_entries($connect, $read))
{
for($ligne = 0; $ligne<$info["count"]; $ligne++)
{
$names[$ligne]=iconv('UTF-8', 'cp1251', $info[$ligne][$fields[0]][0]);
$users[$ligne]['name'] = iconv('UTF-8', 'cp1251', $info[$ligne][$fields[0]][0]);
$users[$ligne]['email'] = $info[$ligne][$fields[1]][0];
}
}
ldap_close($connect);
natsort($names);
$ligne=0;
foreach ($names as $key => $val)
{
if (($ligne % 2) == 0) $color = '#F0EDFE';
else $color='#E8E2FE';
$result .= "<tr bgcolor=\"$color\">"
. '<td><p>'.$val.'</p></td>'
. '<td><p><a class="text_link" href="mailto:'.$users[$key]['email'].'">'.$users[$key]['email'].'</a></p></td>'
. '<td><a class="text_link" href="index.php?id=10005&adres='.$users[$key]['email'].'">Edit</a></td>'
. '<td><a class="text_link" href="ldapdelete.php?adres='.$users[$key]['email'].'">Delete</a></td></tr>';
$ligne++;
}
print $result.'</table><br>';
?>
<form action=ldapadd.php method=post>
<table border="0" width="400">
<tr><td><p align="right"><font class="textblack">Адрес:</font></p></td>
<td><input type="text" name="adres" class="eximadd"></td></tr>
<tr><td><p align="right"><font class="textblack">Фамилия Имя Отчество:</font></p></td>
<td><input type="text" name="name" class="eximadd"></td></tr>
<tr>
<td> </td>
<td><input type="submit" value="Добавить" class="buttonreg" allign="right"></td>
</tr></table>
<input type=hidden name=session_id value="<?php echo session_id();?>"></form><p> </p>
<?php
?>
ldapedit.php -- формочка для редактирования
Код: Выделить всё
<?php
$fields = array("cn", "mail", "givenName", "sn", "uid", "o","objectclass");
$ldap_user ="cn=broot, dc=kk, dc=com";
$ldap_pass = "";
$result = '';
$names=array();
$users=array();
if (! isset($_GET['adres'])) exit('<b><font size="6" color="#FF0000">Ошибка выполнения запроса</font></b>');
$addr = $_GET['adres'];
$filter = "mail=".$addr;
$connect = ldap_connect("192.168.0.200");
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($connect, $ldap_user, $ldap_pass);
$read = ldap_search($connect, "ou=mail, dc=kk, dc=com", $filter, $fields);
if ($info = ldap_get_entries($connect, $read))
{
$name = iconv('UTF-8', 'cp1251', $info[0][$fields[0]][0]);
$corp = iconv('UTF-8', 'cp1251', $info[0][$fields[5]][0]);
$email= $info[0][$fields[1]][0];
}
ldap_close($connect);
?>
<br>
<form action=ldapupd.php method=post>
<table border="0" width="400">
<tr><td><p align="right"><font class="textblack">Адрес:</font></p></td>
<td><input type="text" name="adres" class="eximadd" value="<?php echo $email;?>"></td></tr>
<tr><td><p align="right"><font class="textblack">Фамилия Имя Отчество:</font></p></td>
<td><input type="text" name="name" class="eximadd" value="<?php echo $name;?>"></td></tr>
<tr><td><p align="right"><font class="textblack">Компания:</font></p></td>
<td><input type="text" name="corp" class="eximadd" value="<?php echo $corp;?>"></td></tr>
<tr>
<td> </td>
<td><input type="submit" value="Отправить" class="buttonreg" allign="right"></td>
</tr></table>
<input type=hidden name=session_id value="<?php echo session_id();?>">
<input type=hidden name=oldaddr value="<?php echo $addr;?>"></form><p> </p>
<?php
?>
ldapadd.php -- добавление данных в каталог
Код: Выделить всё
<?php
$dc = ', ou=mail, dc=kk, dc=com';
$ldaphost = '192.168.0.200';
$ldapuser = 'cn=broot, dc=kk, dc=com';
$ldappass = '';
$html_head = "<html><head><meta http-equiv=\"Content-Language\" content=\"en-us\">".
"<META http-equiv='Refresh' content='5; URL=ldap.php'>".
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\"><body>";
$html_footer = "</body></html>";
$username = $_POST[name];
$useremail= $_POST[adres];
$ds=ldap_connect($ldaphost);
if ($ds) {
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$r=ldap_bind($ds, $ldapuser, $ldappass);
list($sn,$givenName) = split (' ', $username, 2);
$info["cn"]=iconv('cp1251', 'UTF-8', $username);
$info["givenName"]=iconv('cp1251', 'UTF-8', $givenName);
$info["o"]=iconv('cp1251', 'UTF-8', 'Компрессорный комплекс');
$info["sn"]=iconv('cp1251', 'UTF-8', $sn);
$info["mail"]=$useremail;
$info["objectclass"][0]='top';
$info["objectclass"][1]='person';
$info["objectclass"][2]='inetorgperson';
// добавление данных в каталог
$r=ldap_add($ds, "cn=".iconv('cp1251', 'UTF-8', $username).$dc, $info);
print "${html_head}Добавлен: ${username}<br>$html_footer";
ldap_close($ds);
} else {
echo 'Нет соединения с LDAP сервером';
}
?>
ldapdelete.php -- удаление записи из каталога
Код: Выделить всё
<?php
session_start();
$dc = ', ou=mail, dc=kk, dc=com';
$fields = array('cn', 'mail');
$ldaphost = '192.168.0.200';
$ldapuser = 'cn=broot, dc=kk, dc=com';
$ldappass = '';
$html_head = "<html><head><meta http-equiv=\"Content-Language\" content=\"en-us\">".
"<META http-equiv='Refresh' content='5; URL=ldap.php'>".
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\"><body>";
$html_footer = "</body></html>";
if (! isset($_GET['adres'])) exit('<b><font size="6" color="#FF0000">Ошибка выполнения запроса</font></b>');
$oldaddr = $_GET['adres'];
$filter = "mail=".$oldaddr;
$ds=ldap_connect($ldaphost);
if ($ds) {
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$r=ldap_bind($ds, $ldapuser, $ldappass);
$read = ldap_search($ds, "ou=mail, dc=kk, dc=com", $filter, $fields);
if ($info = ldap_get_entries($ds, $read))
{
$name = iconv('UTF-8', 'cp1251', $info[0][$fields[0]][0]);
}
$r=ldap_delete($ds, "cn=".iconv('cp1251', 'UTF-8', $name).$dc);
print "${html_head}Удален:${name}<br>$html_footer";
ldap_close($ds);
} else {
echo 'Нет соединения с LDAP сервером';
}
?>
ldapupd.php -- обновление данных
Код: Выделить всё
<?php
$dc = ', ou=mail, dc=kk, dc=com';
$fields = array('cn', 'mail', 'givenName', 'sn', 'uid', 'o','objectclass');
$ldaphost = '192.168.0.200';
$ldapuser = 'cn=broot, dc=kk, dc=com';
$ldappass = '';
$html_head = "<html><head><meta http-equiv=\"Content-Language\" content=\"en-us\">".
"<META http-equiv='Refresh' content='5; URL=ldap.php'>".
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\"><body>";
$html_footer = "</body></html>";
if (! isset($_POST['adres'])) exit('<b><font size="6" color="#FF0000">Ошибка выполнения запроса</font></b>');
if (! isset($_POST['name'])) exit('<b><font size="6" color="#FF0000">Ошибка выполнения запроса</font></b>');
$useremail = $_POST['adres'];
$username = $_POST['name'];
$usercorp = $_POST['corp'];
$oldaddr = $_POST['oldaddr'];
$filter = "mail=".$oldaddr;
$ds=ldap_connect($ldaphost);
if ($ds) {
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$r=ldap_bind($ds, $ldapuser, $ldappass);
$read = ldap_search($ds, "ou=mail, dc=kk, dc=com", $filter, $fields);
if ($info = ldap_get_entries($ds, $read))
{
$name = iconv('UTF-8', 'cp1251', $info[0][$fields[0]][0]);
}
$r=ldap_delete($ds, "cn=".iconv('cp1251', 'UTF-8', $name).$dc);
list($sn,$givenName) = split (' ', $username, 2);
// подготовка данных
$newinfo["cn"]=iconv('cp1251', 'UTF-8', $username);
$newinfo["givenName"]=iconv('cp1251', 'UTF-8', $givenName);
$newinfo["o"]=iconv('cp1251', 'UTF-8', 'Компрессорный комплекс');
$newinfo["sn"]=iconv('cp1251', 'UTF-8', $sn);
$newinfo["mail"]=$useremail;
$newinfo["objectclass"][0]='top';
$newinfo["objectclass"][1]='person';
$newinfo["objectclass"][2]='inetorgperson';
// добавление данных в каталог
$r=ldap_add($ds, "cn=".iconv('cp1251', 'UTF-8', $username).$dc, $newinfo);
print "${html_head}Изменен:${username}<br>$html_footer";
ldap_close($ds);
} else {
echo 'Нет соединения с LDAP сервером';
}
?>