精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● PHP>>功能代码>>邮件相关>>LDAP的使用

主题:LDAP的使用
发信人: netcharm()
整理人: dalasthunder(2002-07-25 06:32:35), 站内信件

下面是小弟的LDAP的一个实现,主要是针对Exchange Server所做.

PS1:当服务器返回结果太多可能会有错误
PS2:里面需要的header.inc和footer.inc其实就是标准的html<head>
    尾</head>与需要的信息.

    欢迎各位试验.


=======Cut Begin (scd.php3)========
<?PHP

require("header.inc");

$ldapserver = "ldap.xxx.xxx.com.cn";
$ldapid = 0;
$ldapds = "";
$ldapbindr = "";
$ldapsr = "";

$ldapservers = array();

$ldapservers['server'] [0] = "ldap.xxx.xxx.com.cn";
$ldapservers['serverdesc'][0] = "XXX Ltd.";
$ldapservers['fields'] [0] = "co,st,l,company,department,physic
aldeliveryofficename,sn,givenname,telephonenumber,postalcode,mail,titl
e";
$ldapservers['fieldsdesc'][0] = "Country,Province,City,Company,Dep
artment,Office,First Name, Last Name,Phone,Postal Code,E-Mail,Title";


$ldapservers['server'] [1] = "xxx.yyy.zzz.111";
$ldapservers['serverdesc'][1] = "YYY Ltd.";
$ldapservers['fields'] [1] = "co,st,l,company,department,physic
aldeliveryofficename,sn,givenname,telephonenumber,postalcode,mail,titl
e";
$ldapservers['fieldsdesc'][1] = "Country,Province,City,Company,Dep
artment,Office,First Name, Last Name,Phone,Postal Code,E-Mail,Title";



function FillSelect($values,$texts,$selected)
{
$counter = count($values);
if($counter==0) return;
if($selected=="") $selected="mail";
for($I=0;$I<$counter;$I++)
{
if($values[$I]==$selected) $set=" selected";
else $set="";
print("\r\t\t<option value=\"".$values[$I]."\"".$set.">".$texts[$I]
."</option>\n");
    }
  }

  function ldapsearch()
  {

Global $ldapserver,$searchtext,$searchfor,$searchat;

$ahref="";

    if($searchtext!="")
      $searchstr=$searchfor."=*".$searchtext."*";
else
      die("Please input search textNo Matched!\n");

    $ldapds = ldap_connect($ldapserver);
    if($ldapds == false)
      die( "\rConnect Error!\n");

$ldapbindr=ldap_bind($ldapds);
if($ldapbindr==false)
  die( "\rBinding Error!\n");

    $ldapsr = ldap_search($ldapds,"",$searchstr);
if($ldapsr==false)
  die( "\rSearch Failure!\n");

$ldapcount=ldap_count_entries($ldapds,$ldapsr);
    if($ldapcount==0) 
  die("No Matched!\n");
    
$ldapinfo = ldap_get_entries($ldapds, $ldapsr);

    for($i=0;$i<$ldapcount;$i++)
{

$space=" ";

$dn =ldap_explode_dn($ldapinfo[$i]["dn"],1);
$o =$dn[3];
$ou =$dn[2];
$contury =$ldapinfo[$i]["co"][0];
$state =$ldapinfo[$i]["st"][0];
$city =$ldapinfo[$i]["l"][0];
$company =$ldapinfo[$i]["company"][0];
$department =$ldapinfo[$i]["department"][0];
$office =$ldapinfo[$i]["physicaldeliveryofficename"][0];
$sn =$ldapinfo[$i]["sn"][0];
$gn =$ldapinfo[$i]["givenname"][0];
$phone =$ldapinfo[$i]["telephonenumber"][0];
$postcode =$ldapinfo[$i]["postalcode"][0];
$mail =$ldapinfo[$i]["mail"][0];
$info =$ldapinfo[$i]["info"][0];
$title =$ldapinfo[$i]["title"][0];
$name =$sn.", ".$gn;

if($sn=="") $name=$gn;

$mod =$i % 2;
echo "\t<TR>\n";
    echo "\t\t<td class=body".$mod.">".$i.$space."</td>\n";
        echo "\t\t<td class=body".$mod.">".$name.$space."</td>\n";
        echo "\t\t<td class=body".$mod."><A HREF=\"mailto:".$mail."\">
".$mail.$space."</td>\n";
echo "\t\t<td class=body".$mod.">".$phone.$space."</td>\n";
echo "\t\t<td class=body".$mod.">".$title.$space."</td>\n";
echo "\t\t<td class=body".$mod.">".$office.$space."</td>\n";
echo "\t\t<td class=body".$mod.">".$department.$space."</td>\n";
echo "\t\t<td class=body".$mod.">".$company.$space."</td>\n";
echo "\t\t<td class=body".$mod.">".$city.$space."</td>\n";
echo "\t\t<td class=body".$mod.">".$state.$space."</td>\n";
echo "\t\t<td class=body".$mod.">".$contury.$space."</td>\n";
        echo "\t\t<td class=body".$mod.">".$postcode.$space."</td>\n";

  echo "\t</tr>\n";
    }
    ldap_free_result($ldapsr);
    ldap_unbind($ldapbindr);
// ldap_close($ldapds);
  }

  include("scd.inc");

  if($searchat!="") 
    $ldapserver=$searchat;

  if($searchat!="") 
    include("scdresult.inc");


  require("footer.inc");
?>

=======Cut End========

=======Cut Begin (scd.inc)=======
<form name="scdform" method="post" action="scd.php3">
  <div align="center"> 
    <table width="64%" border="0" cellspacing="0" cellpadding="1">
      <tr class=body> 
        <th colspan="3" height="29"> Directory</th>
      </tr>
      <tr class=body> 
        <td class=body>Searching At</td>
        <td class=body> 
          <select name="searchat">
     <?
FillSelect($ldapservers['server'],$ldapservers['serverdesc'],$
searchat);
?>
          </select>
        </td>
      </tr>
      <tr class=body> 
        <td class=body> 
          <select name="searchfor">
     <?
$counter=count($ldapservers);
if($searchfor=="") $searchfor="mail";
for($I=0;$I<counter;$I++)
{
if($ldapservers['fields'][$I]==$searchfor) break;
}
FillSelect(explode(",",$ldapservers['fields'][$I]),explode(","
,$ldapservers['fieldsdesc'][$I]),$searchfor);
?>
          </select>
        </td>
        <td class=body> Contain 
          <input type="text" name="searchtext" value=<?echo $searchtex
t ?>>
        </td>
      </tr>
      <tr class=body> 
        <td width="25%" class=body> 
          &nbsp;
        </td>
        <td class=body> 
          <input type="submit" name="search" value="Search">
          <input type="reset" name="Clear" value="Clear">
        </td>
      </tr>
    </table>
  </div>
</form>
=======Cut End========

=======Cut Begin (scdresult.inc)========
<table class=resultbody name="SCD Result" cellpadding="1" cellspacing=
"0" width="99%">
  <tr class=resultbody> 
    <th width="12" height="30" class=resultbody>&nbsp;</th>
    <th width="14%" height="30" class=resultbody>Name</th>
    <th width="24%" height="30" class=resultbody>E-Mail</th>
    <th width="5%" height="30" class=resultbody>Phone</th>
    <th width="10%" height="30" class=resultbody>Title</th>
    <th width="7%" height="30" class=resultbody>Office</th>
    <th width="8%" height="30" class=resultbody>Dept</th>
    <th width="8%" height="30" class=resultbody>Company</th>
    <th width="10%" height="30" class=resultbody>City</th>
    <th width="8%" height="30" class=resultbody>Province</th>
    <th width="15%" height="30" class=resultbody>Country</th>
    <th width="5%" height="30" class=resultbody>ZIP</th>
  </tr>
  <?
ldapsearch();
?> 
</table>

=======Cut End========

--
    读万卷书  行万里路  乘万里风 破万里浪
-============================================-
          博览群书:)
个人主页:http://done.163.net
镜像站点:http://member.netease.com/~top

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.102.55.91]

[关闭][返回]