PHP 从活动目录中读取用户信息

PHP read user information from active directory

我必须阅读一些用户的一般信息

如姓名、姓氏、电子邮件、部门等来自带有 PHP 脚本的活动目录

这是我的代码:

define('DOMAIN_FQDN', 'domain.ltd');
define('LDAP_SERVER', '192.168.30.1');

    $user = strip_tags($_POST['username']) .'@'. DOMAIN_FQDN;
    $pass = stripslashes($_POST['password']);
    $conn = ldap_connect("ldap://". LDAP_SERVER ."/");

    if (!$conn){
        $err = 'Could not connect to LDAP server';
    }else{
        //define('LDAP_OPT_DIAGNOSTIC_MESSAGE', 0x0032);

        ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
        ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);

        $bind = @ldap_bind($conn, $user, $pass);

        ldap_get_option($conn, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error);

        if ($bind){
            //$base_dn = array("CN=Users,DC=". join(',DC=', explode('.', DOMAIN_FQDN)), "OU=Users,OU=People,DC=". join(',DC=', explode('.', DOMAIN_FQDN)));
            $base_dn = array("DC=". join(',DC=', explode('.', DOMAIN_FQDN)), "OU=*,DC=". join(',DC=', explode('.', DOMAIN_FQDN)));
            $result = ldap_search(array($conn,$conn), $base_dn, "(cn=*)");
            if (!count($result)){
                $err = 'Unable to login: '. ldap_error($conn);
            }else{
                foreach ($result as $res){
                    $info = ldap_get_entries($conn, $res);
                    print_r($info);
                }
            }
        }
    }

此代码 print_r($info); returns 一个包含大量数据的数组,这意味着我的连接工作正常..

但是没有关于用户的任何信息

我需要获取当前登录的用户数据

这是错误的还是我必须在上面添加更多选项?

活动目录中的用户数据:

您必须决定要阅读哪些帐户。使用过滤器 (cn=*),您告诉 AD 为您提供 cn 属性具有值的每个对象。这将匹配几乎您域中的每个 AD 对象,包括我认为您不需要的计算机。

如果要查找域中的所有用户,可以使用:

(objectClass=user)

如果您想查找某个特定用户,则查询将取决于您拥有的该用户的标识符。例如,如果您知道他们的用户名(假设为 "PeimanF"),则查询将如下所示:

(&(objectClass=user)(sAMAccountName=PeimanF))