我必须阅读一些用户的一般信息
使用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);
返回一个包含大量数据的数组,这意味着我的连接工作正常。
但是关于用户没有任何事情
我需要获取当前登录的用户数据
这是错误的还是我必须在上面加上更多选择?
活动目录中的用户数据:
答案 0 :(得分:0)
您必须确定要阅读的帐户。使用过滤器(cn=*)
,您正在告诉AD为每个对象提供cn
属性具有值的对象。这几乎可以匹配您域中的几乎每个AD对象,包括计算机,我认为您不需要。
如果要查找域中的所有用户,可以使用以下方法:
(objectClass=user)
如果要查找一个特定用户,查询将取决于您为该用户拥有的标识符。例如,如果您知道其用户名(假设为“ PeimanF”),则查询将如下所示:
(&(objectClass=user)(sAMAccountName=PeimanF))