$sr=ldap_search($ds,"o=My Company, c=US", "sn=S*"); 有问题......查一下手册,这有个例子参考一下: <?php // $ds is a valid link identifier for a directory server// $person is all or part of a person's name, eg "Jo"$dn = "o=My Company, c=US"; $filter="(|(sn=$person*)(givenname=$person*))"; $justthese = array("ou", "sn", "givenname", "mail");$sr=ldap_search($ds, $dn, $filter, $justthese);$info = ldap_get_entries($ds, $sr);echo $info["count"]." entries returned\n"; ?>
这个例子的问题出在ldap_search()这个函数的第二个参数上
例子里面是 o=My Company, c=US 但是看了一些相关文章 说要写 dc=前面域名,dc=后面域名
我的机器没有配置 dns 就是在host 里面写上了 我的ip=test.com
然后我写的dc=test,dc=com可是还是有问题
另外我的服务器是iis的
<?php
// $ds is a valid link identifier for a directory server// $person is all or part of a person's name, eg "Jo"$dn = "o=My Company, c=US";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("ou", "sn", "givenname", "mail");$sr=ldap_search($ds, $dn, $filter, $justthese);$info = ldap_get_entries($ds, $sr);echo $info["count"]." entries returned\n";
?>
$ds=ldap_connect("localhost"); // 先连上有效的 LDAP 服务器
echo "连上 ".$ds."<p>";if ($ds) {
echo "Binding ...";
$r=ldap_bind($ds,"cn=administrator,cn=users,dc=otc,dc=com","234");
echo "Bind 返回 ".$r."<p>";
echo "Searching for (sn=S*) ..."; // 找寻 S 开头的姓氏
$sr=ldap_search($ds,"dc=otc,dc=com","sn=S*");
//以下程序忽略在ldap_bind这行如果 把后面的dc=otc,dc=com做稍微一点改动 则ldap_bind这个函数就报错
那么就说明这2个dc写的是正确的
那么下面的ldap_search函数的参数就也应该是正确的 可是运行以后还是报错
Warning: ldap_search() [function.ldap-search]: Search: Can't contact LDAP server in
列出树状简表。语法: int ldap_search(int handle, string base_dn, string filter, array [attributes]);返回值: 整数函数种类: 网络系统
内容说明
本函数用来列出树状资料,它的值域条件是 LDAP_SCOPE_SUBTREE。参数 handle 为打开 LDAP 的代号。参数 base_dn 为最基本的 dn 条件值,例如包括 o 和 c 二字段。参数 filter 为布尔条件,它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 文件,其中的 Search Syntax 一部份有详细的说明。参数 attributes 可省略,用来配置更细的列出属性。
使用范例
下面范例为片段程序<?php
$dn = "o=SuperLDAP Company, c=TW";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array( "ou", "sn", "givenname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
print $info["count"]." entries returned<p>";
?>
从上面的资料来看,好像真的是你的字符串有问题了,重新写下吧。这个东西我使用的不多,只是看到楼主的帖子才找了下资料,嘿嘿~全当是我胡乱说吧