使用 PHP 提取 AD 照片



我正在尝试返回用户的AD照片以及他们的姓名和职位。我可以正常拉取任何文本字段,但是当我尝试拉取"缩略图照片"属性时会出错。诚然,我正在使用我发现的模板,但是我很困惑大多数属性似乎除了照片之外是如何工作的。

这是我目前在尝试运行以下代码时遇到的错误

Notice: Undefined index: thumbnailphoto in C:xampphtdocsvisitorldap-test.php on line 23

任何帮助将不胜感激。

<?php
// -------------- CHANGE VARIABLES TO SUIT YOUR ENVIRONMENT  --------------
//LDAP server address
$server = "ldap://192.168.1.55";
//domain user to connect to LDAP
$user = "user.name@mydomain.local";
//user password
$psw = "password";
//FQDN path where search will be performed. OU - organizational unit / DC - domain component
$dn = "OU=Accounts,OU=My Company,DC=mydomain,DC=com";
//Search query. CN - common name (CN=* will return all objects)
$search = "CN=*";                    
// ------------------------------------------------------------------------
echo "<h2>php LDAP query test</h2>";
// connecting to LDAP server
$ds=ldap_connect($server);
$r=ldap_bind($ds, $user , $psw); 
// performing search
$sr=ldap_search($ds, $dn, $search);
$data = ldap_get_entries($ds, $sr);    
echo "Found " . $data["count"] . " entries";
for ($i=0; $i<$data["count"]; $i++) {
echo "<h4><strong>Common Name: </strong>" . $data[$i]["cn"][0] . "</h4><br />";
echo "<strong>Distinguished Name: </strong>" . $data[$i]["dn"] . "<br />";
//checking if discription exists 
if (isset($data[$i]["description"][0])) 
echo "<strong>Desription: </strong>" . $data[$i]["description"][0] . "<br />";
else 
echo "<strong>Description not set</strong><br />";
//checking if email exists
if (isset($data[$i]["mail"][0]))
echo "<strong>Email: </strong>" . $data[$i]["mail"][0] . "<br /><hr />";
else 
echo "<strong>Email not set</strong><br /><hr />";
}
// close connection
ldap_close($ds);
?>

尝试运行以下代码示例:

<?php
// -------------- CHANGE VARIABLES TO SUIT YOUR ENVIRONMENT  --------------
//LDAP server address
$server = "ldap://192.168.1.55";
//domain user to connect to LDAP
$user = "user.name@mydomain.local";
//user password
$psw = "password";
//FQDN path where search will be performed. OU - organizational unit / DC - domain component
$dn = "OU=Accounts,OU=My Company,DC=mydomain,DC=com";
//Search query. CN - common name (CN=* will return all objects)
$search = "CN=*";
// ------------------------------------------------------------------------
echo "<h2>php LDAP query test</h2>";
// connecting to LDAP server
$ds = ldap_connect($server);
$r = ldap_bind($ds, $user , $psw);
// performing search
$sr = ldap_search($ds, $dn, $search);
$data = ldap_get_entries($ds, $sr);
echo "Found " . $data["count"] . " entries";
for ($i = 0; $i < $data["count"]; $i++) {
echo "<h4><strong>Common Name: </strong>" . $data[$i]["cn"][0] . "</h4><br />";
echo "<strong>Distinguished Name: </strong>" . $data[$i]["dn"] . "<br />";
// Check if user photo exists
if (isset($data[$i]["thumbnailphoto"]) && isset($data[$i]["thumbnailphoto"][0])) {
echo "<strong>Photo in Base64: </strong>" . base64_encode($data[$i]["thumbnailphoto"][0]) . "<br />";
}
else {
echo "<strong>Photo not set</strong><br />";
}
// Checking if discription exists 
if (isset($data[$i]["description"][0])) {
echo "<strong>Desription: </strong>" . $data[$i]["description"][0] . "<br />";
}
else {
echo "<strong>Description not set</strong><br />";
}
// Checking if email exists
if (isset($data[$i]["mail"][0])){
echo "<strong>Email: </strong>" . $data[$i]["mail"][0] . "<br /><hr />";
}
else {
echo "<strong>Email not set</strong><br /><hr />";
}
}
// close connection
ldap_close($ds);
?>

问题应该是您检查是否设置了$data[$i]["thumbnailphoto"][0],而您应该先检查$data[$i]["thumbnailphoto"]

然后,您可以阅读此问题 显示缩略图照片 来自 活动目录 在 PHP 中,并继续编码以显示图像。

最新更新