Поиск по LDAP в браузере с использованием jQuery

LDAP
Потребовался мне быстрый поиск по LDAP с любого компьютера в распределенной сети c возможностью выбора нескольких адресатов для отсылки письма. В итоге написал скрипт с использованием jQuery, который позволяет делать выборки из базы без перезагрузки страницы, манипулировать почтовыми адресами для отсылки. Выборку делает php программа, которая возвращает выборку данных в основной html документ. В итоге в браузере выглядит примерно так:
ldap search
Текст php скрипта getldapdata.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;
}

function GetDataForm($var)
{
        if (isset($_POST[$var])) {
                return $_POST[$var];
        } elseif (isset($_GET[$var])) {
                return $_GET[$var];
        } else return "";
}

$text = GetDataForm('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", "department", "title",  "mail", "telephonenumber"));
    ldap_sort( $ds, $sr, "displayname");
    $info = ldap_get_entries($ds, $sr);
    
    print "
	<table align='center'>
	<tbody>
	<tr><td>
	 <TABLE class='atable'>   <thead>";
	    print "<TR>";
	    print "<TH> Полное имя пользователя </TH>";
	    print "<TH> Отдел </TH>";
	    print "<TH> Должность </TH>";
	    print "<TH> E-mail пользователя </TH>";
	    print "<TH> Телефон</TH>";
	    print "</TR></thead><tbody>";

    for($i=0; $i<$info["count"]; $i++) {
        print "<TR>";
        print "<TD>" . $info[$i]["displayname"][0] . " </TD>";
        print "<TD>" . $info[$i]["department"][0] . " </TD>";
        print "<TD>" . $info[$i]["title"][0] . " </TD>";
        print "<TD> <p> " . $info[$i]["mail"][0] . " </p> </TD>";
        print "<TD>" . $info[$i]["telephonenumber"][0] . " </TD>";
        print "</TR>";
    }
    print "</tbody>	</table>	
	</td>
	</tr>
	</tbody></table>	";
} 

ldap_close($ds);
} else {print "Отсутсвуют параметры поиска";}

?>


Текст index.html
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; Charset=UTF-8">  
<script type="text/javascript" src="jquery.js"></script>  
<link rel='stylesheet' type='text/css' href='st.css' /> 
<title>Поиск в справочнике </title>
</head>  
<body id='body'>  
<form id="myForm"> 
	<table class='aaa'>
	<tbody>
	<tr>
	<td align='left'>      Введите фамилию для поиска в справочнике  
	<input id='text' name='text' size='20' maxlength='400' autofocus>
        <input align='left' value='Найти' id='btn1' type='submit'  ></td>
	</tr>
	</tbody>	
	</table>	
	</form>

	<TABLE class='aaa'>   
 	   <TR> 
		<Td> <div  align="center" id="content"></div> </Td>
		<td width="300px" valign="top"> <div>
		    <b>Список получателей письма </b>
		    <div id="mail"> </div> 
	  	    <button id="send1">Создать письмо</button>  
                    <button id="send2">Очистить список</button>
		</div>
		</td>
	  </tr>
	</table>

    <script>  
        $(document).ready(function(){  

	  $("#send1").click(function(){
	          if ($("#mail").html()!=""){
		  window.location = "mailto:"+$("#mail").html();}
 		});

	  $("#send2").click(function(){
		  $("#mail").html("");
 		});

	  $("p").live("click", function(){
	      $("#mail").append($(this).text() + ";");
	    });
	
	  $('#myForm').submit(function(){  
                $.ajax({  
                    type: "POST",  
                    url: "getldapdata.php",  
                    data: "text="+$("#text").val(),  
                    success: function(html){  
                        $("#content").html(html);  
                    }  
                });  
                return false;  
            });  
        });  
    </script>  
</body>  
</html> 


Для подключения к своему серверу в файле getldapdata.php нужно настроить параметры доступа:
$LDAP_BINDDN = "user@domain";
$LDAP_PASS = "*****";
$LDAP_BASE_DN = "DC=orgname,DC=local";
$LDAP_SERVER = "192.168.0.1";

И возможно потребуется донастроить apache в плане подключения ldap модулей. Работа скрипта проверена на Ubunta c Apache 2.0 и Windows 7 с EasyPHP 5.2.

Скачать весь набор файлов (28 кб)

2 комментария

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.