使用PHP连接LDAP服务器(四)

<?>> 

定制搜索界面的HTML表格

  最后,我们要定制搜索用的HTML表格,它是用来给用户执行搜索的。


//定制表格
echo " <CENTER><FORM action='"$PHP_SELF"' method='"GET"'>"; 
echo "Search in:<SELECT name='"SERVER_ID"'>"; //循环以建立SELECT选项 for($i=0; $i<COUNT($LDAP_NAME); <br $i++)> echo "<OPTION selected value='"$i"'>".$LDAP_NAME[$i]."</OPTION>"; echo "</SELECT>
"; 
echo "Search for:<INPUT name='"common"' type='"text"'>"; 
echo "<INPUT name='"lookup"' type='"submit"' value='"go"'>
"; 
echo "(You can use * for wildcard searches, ex. * Stanley will find all Stanleys)
"; 
echo "</FORM></CENTER>"; 

?> 

  代码中的$PHP_SELF是一个全局的常量,代表的是脚本页面自身,其中的循环是用来通过我们的$LDAP_NAME变量创建SELECT选项。

显示结果

  现在所有的工作已经完成了,我们将打印出结果集。如果没有符合的结果,将会显示"No Results"的信息。

<<?>php 

//显示结果
if($result_list) 

echo " <CENTER><TABLE border='"1"' cellPadding='"10"' cellSpacing='"0"' 
BGCOLOR="#FFFFEA" WIDTH="450"> <TBODY><TR><TD>$result_list</TD></TR>
</TBODY></TABLE></CENTER>"; 

else 
echo "No Results"; 


?> 

源代码

  以下是完整的源代码,只要将它剪切并粘贴到一个HTML文档,就可以尝试一下了。

<?php 

$LDAP_NAME[0] = "Netscape Net Center"; 
$LDAP_SERVER[0] = "memberdir.netscape.com"; 
$LDAP_ROOT_DN[0] = "ou=member_directory,o=netcenter.com"; 

$LDAP_NAME[1] = "Bigfoot"; 
$LDAP_SERVER[1] = "ldap.bigfoot.com"; 
$LDAP_ROOT_DN[1] = ""; 

//如果没有选择服务器的话将它设置为0 
if(!$SERVER_ID) 
$SERVER_ID=0; 

//建立查询
$ldap_query = "cn=$common"; 

//连接到LDAP 
$connect_id = ldap_connect($LDAP_SERVER[$SERVER_ID]); 

if($connect_id) 

//认证 
$bind_id = ldap_bind($connect_id); 

//执行搜索 
$search_id = ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query); 

//将结果集合分配给一个数组 
$result_array = ldap_get_entries($connect_id, $search_id); 

else 

//显示连接错误 
echo "Could not connect to LDAP server: $LDAP_SERVER[$SERVER_ID]"; 


//如果搜索成功,将结果排序 
if($result_array) 

for($i=0; $i { 
$format_array[$i][0] = strtolower($result_array[$i]["cn"][0]); 
$format_array[$i][1] = $result_array[$i]["dn"]; 
$format_array[$i][2] = strtolower($result_array[$i]["givenname"][0]); 
$format_array[$i][3] = strtolower($result_array[$i]["sn"][0]); 
$format_array[$i][4] = strtolower($result_array[$i]["mail"][0]); 


//排序数组 
sort($format_array, "SORT_STRING"); 

for($i=0; $i { 
$cn = $format_array[$i][0]; 
$dn = $format_array[$i][1]; 
$fname = ucwords($format_array[$i][2]); 
$lname = ucwords($format_array[$i][3]); 
$email = $format_array[$i][4]; 

if($dn && $fname && $lname && $email) 

$result_list .= "<A href='/"ldap://$LDAP_SERVER[$SERVER_ID]/$dn/"'>$fname $lname</A>"; 
$result_list .= " <$email>
n"; 

elseif($dn && $cn && $email) 

$result_list .= "<A href='/"ldap://$LDAP_SERVER[$SERVER_ID]/$dn/"'>$cn</A>"; 
$result_list .= " <<A href='/"mailto:$email/"'>$email</A>
n"; 



else 

echo "Result set empty for query: $ldap_query"; 


//关闭连接
ldap_close($connect_id); 

//定制表格
echo " <CENTER><FORM action='"$PHP_SELF"' method='"GET"'>"; 
echo "Search in:<SELECT name='"SERVER_ID"'>"; //循环以建立SELECT选项 for($i=0; $i echo "<OPTION selected value='"$i"'>".$LDAP_NAME[$i]."</OPTION>"; echo "</SELECT>
"; 
echo "Search for:<INPUT name='"common"' type='"text"'>"; 
echo "<INPUT name='"lookup"' type='"submit"' value='"go"'>
"; 
echo "(You can use * for wildcard searches, ex. * Stanley will find all Stanleys)
"; 
echo "</FORM></CENTER>"; 

//显示结果
if($result_list) 

echo " <CENTER><TABLE border='"1"' cellPadding='"10"' cellSpacing='"0"' 
BGCOLOR="#FFFFEA" WIDTH="450"> <TBODY><TR><TD>$result_list</TD></TR>
</TBODY></TABLE></CENTER>"; 

else 
echo "No Results"; 


?>