好象问题出在第10行,$sr=ldap_search($ds,"dc=youDomain,dc=local","sn=A*");
这是基于你ldap的基本dn为"dc=youDomain,dc=local",也就是你的域名为(youDomain.local),可以试一试!
这是基于你ldap的基本dn为"dc=youDomain,dc=local",也就是你的域名为(youDomain.local),可以试一试!
問題是出在第10行. 如果我的Domain=hamagawa;local=MailServer;是不是可以寫成:
$sr=ldap_search($ds,"dc=hamagawa,dc=MailServer","sn=A*"); 但是試過后的結果仍是相同的錯誤提示.
$sr=ldap_search($ds,"dc=hamagawa,dc=com","sn=A*");
如果还有问题,请检查你LDAP服务器(或windows2000的Active Directory)的设置。
$ds=ldap_connect("sqlserver");
写成
$ds=ldap_connect("YourLdapIpAdress");试一下
$ds=ldap_connect("sqlserver");成
$ds=ldap_connect("你的IP地址");试一下。
我試了你的方法它返回的提示是這樣子的﹕
LDAP 搜索測試
連接中 ...連上Resource id #1
Binding ...Bind傳回 1 Warning: LDAP: Unable to perform the search: Can't contact
LDAP server in C:\Inetpub\wwwroot\ISO Document IIS
Application\ldap\ldap.php on line 10 Search傳回 Warning: Supplied argument is not a valid ldap result resource
in C:\Inetpub\wwwroot\ISO Document IIS Application\ldap\ldap.php
on line 12 Warning: Supplied argument is not a valid ldap result
resource in C:\Inetpub\wwwroot\ISO Document IIS
Application\ldap\ldap.php on line 13 ????
2.echo "LDAP 搜索測試</h3>";
3.echo "連接中 ...";
4.$ds=ldap_connect("你的LDAP服务器IP地址",3268);<--如果是win2k的AD
5.echo "連上".$ds."<p>";
6.if ($ds) {
7. echo "Binding ...";
8. $r=ldap_bind($ds,"cn=有域操作权限的用户名,cn=用户所在容器,dc=域名前半,dc=域名的后半","用户密码");//注:win2k必须使用有域操作权限的用户操作LDAP,比如:
//$dn="cn=administrator,cn=users,dc=aaa,dc=com";9. echo "Bind傳回 ".$r."<p>";
10. $sr=ldap_search($ds,"dc=域名前半,dc=域名后半","sn=A*");
11. echo "Search傳回 ".$sr."<p>";
12. echo ldap_count_entries($ds,$sr);
13. $info = ldap_get_entries($ds, $sr);
14. for ($i=0; $i<$info["count"]; $i++) {
15. echo "dn ?: ". $info[$i]["dn"] ."<br>";
16. echo "cn ?: ". $info[$i]["cn"][0] ."<br>";
17. echo "email ?: ". $info[$i]["mail"][0] ."<p>";
18. }
19. echo "????";
20. ldap_close($ds);
21.} else {
22. echo "<h4>無法接到 LDAP 伺服器</h4>";
23.}
24.?>按照上面的操作方法试一下,一定要保证你的服务器配置正确(win2k的AD是正常的).