无法在LDAP php中检索已记录的用户信息

时间:2015-08-17 10:31:04

标签: php login ldap

我正在使用LDAP进行用户登录。 下面的代码适用于验证用户名和密码。

<?php
$hostname="ldap://mydomain";
$ds=ldap_connect($hostname);
ldap_set_option ($ds, LDAP_OPT_REFERRALS, 0) or die('Unable to set LDAP opt referrals');
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version');
ldap_set_option($ds, LDAP_OPT_SIZELIMIT, 33);  
if ($ds)
{
$dn="DC=mydomain,DC=mydomain.net";

$username ="username";
$password ="xxxxxxx";
$ldaprdn = 'VCS' . "\\" . $username;

if (!($ldapc=ldap_bind($ds, $ldaprdn, $password))){
echo "<p>Error:" . ldap_error($ds) . "</p>"; 
echo "<p>Error number:" . ldap_errno($ds) . "</p>"; 
echo "<p>Error:" . ldap_err2str(ldap_errno($ds)) . "</p>"; 
die;
}
$filter = "(samaccountname=mani*)";
$attributes =array('mail');//array("name","telephonenumber","mail","samaccountname");

$result = ldap_search($ds, $dn, $filter,$attributes);
var_dump($result);
$info = ldap_get_entries($ds, $result);
print_r($info);
for ($i=0; $i < $info["count"]; $i++) {
echo $info[$i]["ou"][0];
}
} else {
echo "<h4>Unable to connect to LDAP server</h4>";
}

ldap_unbind($ds);
?>

但它不会返回记录的用户信息。 $ info [“count”] 的值始终为0.

我认为我误解了base_dn的值,并在ldap_search()中进行过滤。

任何建议都会很棒。

2 个答案:

答案 0 :(得分:0)

最后我找到了解决问题的方法。

过滤无效。

所以我将过滤器更改为     $ filter =&#34;(samaccountname = *)&#34 ;;

现在我可以从我可以过滤更多的记录中检索所有记录。

答案 1 :(得分:0)

要从用户那里获取用户名和密码,我使用下面的代码。这对我很有帮助

if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="AD Application"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    if($_SERVER['PHP_AUTH_PW'] == ""){
        unset($_SESSION);
        unset($_SERVER);
        header('WWW-Authenticate: Basic realm="AD Application"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Invalid username and password';
    exit;
    }
$logval=explode("\\",$_SERVER['PHP_AUTH_USER']);
$logsize = sizeof($logval);
echo"<pre>";
print_r($_SERVER);
if($logsize == 1){
    $loginname=$logval[0];
} else if($logsize == 2) {
    $loginname=$logval[1];
} else {
$loginname = "";
}
}