[PHP] Поиск по LDAP в браузере
Еще один скрипт поиска по LDAP с любого компьютера в сети. Скрипт написан на PHP. Не стал прикручивать в выдаче результата красивое оформление, если потребуется, его можно взять из доработанной версии этого же скрипта, который я выкладывал вчера.
А этот скрипт в браузере выглядит примерно так:
Форма поиска

И выдача результата

Текст скрипта
А этот скрипт в браузере выглядит примерно так:
Форма поиска

И выдача результата

Текст скрипта
<?php
$LDAP_BINDDN = "user@domain";
$LDAP_PASS = "*****";
$LDAP_BASE_DN = "DC=orgname,DC=local";
function ConnectToServer()
{
$LDAP_SERVER = "192.168.0.1";
$LDAP_PORT = "389";
$ds=ldap_connect($LDAP_SERVER, $LDAP_PORT);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
return $ds;
}
print "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'><html><head><title>Поиск по справочнику</title>
<style type='text/css'>
*{font-size:100.01%;margin:0}
body{font:.8em Arial,sans-serif;background:#fff}
body,a{color:#222}
a:hover{color:#f00!important}
table{width:100%;height:100%}
table table{align:center;width:65%;max-width:1000px;min-width:300px;margin:auto}
table table td{padding:.25em}
#text,#text input,.b-text{font:100% Arial,sans-serif;width:100%}
p{padding:5em 2.2em 13px}
body,ul,li{padding:0;list-style:none}
</style></head><body>";
$text = $_POST['text'];
if ($text != "") {
$ds=ConnectToServer();
$ldapbind = ldap_bind($ds, $LDAP_BINDDN , $LDAP_PASS);
if ($ldapbind) {
$filter = "(&(displayname=$text*)(objectClass=top)(objectClass=user)(objectClass=organizationalPerson)(objectClass=person)(mail=*))";
$sr=ldap_search($ds, $LDAP_BASE_DN, $filter, array("displayname", "mail", "telephonenumber"));
$info = ldap_get_entries($ds, $sr);
print "
<table>
<tbody>
<tr><td>
<TABLE BORDER=1> <CAPTION>Электронные адреса пользователей домена</CAPTION>";
print "<TR>";
print "<TH> Полное имя пользователя </TH>";
print "<TH> E-mail пользователя </TH>";
print "<TH> Телефон</TH>";
print "</TR>";
for($i=0; $i<$info["count"]; $i++) {
print "<TR>";
print "<TD>" . $info[$i]["displayname"][0] . " </TD>";
print "<TD> <a href='mailto:" . $info[$i]["mail"][0] . "'>" . $info[$i]["mail"][0] . "</a> </TD>";
print "<TD>" . $info[$i]["telephonenumber"][0] . " </TD>";
print "</TR>";
}
print"</TR></TABLE> <a href='index.php'>Вернутся в начало</a>
</td>
</tr>
</tbody> </table>
";
}
ldap_close($ds);
}
else
{
print " <form name='test' id='test' method='post' >
<table>
<tbody>
<tr><td>
<table cellpadding='0' cellspacing='0'>
<tbody>
<tr>
<td align='right' width='200px'>Поиск по справочнику </td>
<td><input id='text' name='text' size='20' maxlength='400' autofocus></td>
<td width='150px'> <input value='Найти' type='submit'></td>
</tr>
</tbody> </table>
</td>
</tr>
</tbody> </table>
</form>
";
}
print"</body></html>";
?>
4 комментария
Я немного доработал contagged, чтобы он не столь интенсивно читал из LDAP, но думаю с нормальным знанием PHP и в особенности JavaScript из него можно сделать вообще «Конкорд». Если интересны мои доработки к стандартному движку Contagged, могу выложить как-нибудь. Жаль только здесь вроде нельзя прикпреплять файлы :)