Re: LDAP newb gets errors against 2003 AD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



After making the recommended changes, the browser returned:

     LDAP bind successful...
     Warning: ldap_search() [function.ldap-search]: Search: Bad search
filter in
     e:\intertest\test.php on line 20

     Warning: ldap_get_entries(): supplied argument is not a valid
ldap result resource in
     e:\intertest\test.php on line 21

So my goal then is to produce a valid search filter.
I considered the most basic filter:

     $filter = "(cn=*)";

And got this back:

     LDAP bind successful...
     Warning: ldap_search() [function.ldap-search]: Search: Operations
error in
     e:\intertest\test.php on line 20

     Warning: ldap_get_entries(): supplied argument is not a valid
ldap result resource in
     e:\intertest\test.php on line 21

Did some googling and found that Win 2003 AD does not like the default
ldap settings for PHP. So I insert this code:

     if ($ldapconn)
     {
     ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3);
     ldap_set_option($ldapconn, LDAP_OPT_REFERRALS,0);
     $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

And got back an error of too many results or something like that. So I
narrowed the filter to:

     $filter = "(cn=*Kenney*)";

AND IT WORKS!
Also the field "ou" doesn't produce any results, so I did "sn"
instead, which returns the last name.
So for those who want the big picture (I usually do), here's what I
wound up with:

     <?PHP
     $ldaprdn = 'username@xxxxxxxxxxxxxx';
     $ldappass = 'PWD';
     $ds = 'servername.domainname.net';
     $dn = 'dc=domainname,dc=net';
     $ldapport = 389;
     $ldapconn = ldap_connect($ds, $ldapport)
     or die("Could not connect to LDAP server.");

     if ($ldapconn)
     {
     ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3);
     ldap_set_option($ldapconn, LDAP_OPT_REFERRALS,0);
     $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
     if ($ldapbind)
     {
     echo "LDAP bind successful...";

     $filter = "(cn=*Kenney*)";
     $fields = array("sn", "mail");
     $sr = ldap_search($ldapconn, $dn, $filter, $fields);
     $info = ldap_get_entries($ldapconn, $sr);

     for ($i=0; $i<$info["count"]; $i++)
     {
     echo "<br>";
     echo "lastname: " . $info[$i]["sn"][0];
     echo "<br>";
     echo "mail: " . $info[$i]["mail"][0];
     }
     }
     else
     {
     echo "LDAP bind failed...";
     }
     }
     ldap_close($ldapconn);
     ?>

-Aaron Kenney


On 3/9/06, Bowden, Zeb <zbowden@xxxxxx> wrote:
> The first parameter of ldap_search is the link resource (i.e.
> $ldapconn).
> I think something like this should work:
>
>         $sr = ldap_search($ldapconn, $dn, $filter, $fields);
>         $info = ldap_get_entries($ldapconn, $sr);
>
> -zeb
>
>
>
> -----Original Message-----
> From: Aaron Kenney [mailto:awkenney@xxxxxxxxx]
> Sent: Wednesday, March 08, 2006 5:30 PM
> To: php-windows@xxxxxxxxxxxxx
> Subject:  LDAP newb gets errors against 2003 AD
>
> So here is the offending code:
>
> --------------------------------------------------
> <?PHP
> $ldaprdn = 'USR@xxxxxxxxxx';
> $ldappass = 'PWD';
> $ds = 'server.domain.net';
> $dn = 'dc=domain,dc=net';
> $ldapport = 389;
> $ldapconn = ldap_connect($ds, $ldapport)
> or die("Could not connect to LDAP server.");
>
> if ($ldapconn)
> {
> $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
> if ($ldapbind)
> {
> echo "LDAP bind successful...";
>
>
> $filter = "'cn=*Kenney*'";
> $fields = array("ou", "mail");
> $sr = ldap_search($ds, $dn, $filter, $fields);
>
> $info = ldap_get_entries($ds, $sr);
>
> for ($i=0; $i<$info["count"]; $i++)
> {
> echo "<br>";
> echo "ou: " . $info[$i]["ou"][0];
> echo "mail: " . $info[$i]["mail"][0];
> }
>
> }
> else
> {
> echo "LDAP bind failed...";
> }
> }
> ldap_close($ldapconn);
> ?>
> ----------------------------------------------
>
> Here is the result:
> -------------------------------------
> LDAP bind successful...
> Warning: ldap_search(): supplied argument is not a valid ldap link
> resource in e:\intertest\test.php on line 20
>
> Warning: ldap_get_entries(): supplied argument is not a valid ldap
> link resource in e:\intertest\test.php on line 22
> ------------------------------------------
>
> I know I'm just misusing the ldap_search() function or something, so
> please, someone set me straight here.
>
> --
> PHP Windows Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux