为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
MYYA 2021-11-26 19:29:30
我必须阅读用户的一些一般信息像姓名、姓氏、电子邮件、部门等来自带有 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);返回一个包含大量数据的数组,这意味着我的连接运行良好..但没有任何关于用户的事情我需要获取当前登录的用户数据这是错误的还是我必须在上面添加更多选项?活动目录中的用户数据:
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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

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

(objectClass=user)

如果您想查找一个特定用户,查询将取决于您对该用户的标识符。例如,如果您知道他们的用户名(比方说“PeimanF”),那么查询将如下所示:

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


查看完整回答
反对 回复 2021-11-26
  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信