2013-06-05 7 views
7

Ich habe ein System eingerichtet, um den Namen, die E-Mail-Adresse und die Telefonnummer jedes Benutzers aus Active Directory anzuzeigen, aber ich kann das "thumbailPhoto" nicht verwenden.Miniaturansicht anzeigenFoto von Active Directory in PHP

Ich habe im Internet gesucht, konnte aber nicht feststellen, ob dies möglich ist oder zumindest, welches Format von Active Directory zurückgegeben wird.

Ich benutze derzeit die Klasse ADLDAP also wenn es möglich ist, dies zu verwenden, wäre das ideal.

Vielen Dank im Voraus.

Edit: Ich bekomme so etwas wie diese

ich die Daten im thumbnail Attribute abrufen kann, und wenn es sie direkt an dem Browser-Dump:

ÿØÿàJFIFððÿá PExifII * bh ~ † (2Ži ‡ ¢ ¢ XCanonCanon EOS 5D Marke IIIðð2013: 05: 19 17: 35: 31šâ,¬ "0230ð ' ' '(' 0'8 '' '@' '11''11 0100 ÿÿ ¢ H ¢ P ¢ ¤¤¤ 2013: 04: 17 11: 44: 522013: 04: 17 11: 44: 52H¹o @ B¬ † e »dnäWμ: Ì|® (¶ ' HHÿØÿàJFIFÿÛC $' " # (7), 01444'9 = 82 < .342ÿÛC 2 !! 22222222222222222222222222222222222222222222222222ÿÀ-d" YA ÿÄμ} 1AQa "q2'¡ # B ± Arnd $ 3br, % &‚() 456789: CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ „... † ‡ ‰ Š '!‚‘• --~ ™ š ¢ £ ¤ ¥ |§¨ © ª²³'μ¶ · ¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ × ØÙÚáâãäåæçèéêñòóôõö ÷ øùúÿÄ ÿÄμw! 1AQaq "2B'¡ ± Á # 3RðbrÑ $ 4 ‡% ñ &‚()

Das ist nicht alles, aber es ist eine sehr lange Zeichenfolge, ich nehme an, ist eine Art binäre Zeichenfolge?

+0

Ich gehe davon aus, dass Sie den Inhalt des ‚thumbnail abrufen ". Haben Sie analysiert, welches Bildformat der Inhalt hat? – heiglandreas

+0

Ich habe einen Ausschnitt von dem, was zurückgegeben wird, hinzugefügt. Bezüglich des Bildformats weiß ich nicht, was Active Directory mit dem Bild macht, wenn ein Benutzer einen hinzufügt. Ich weiß nicht, ob es in dem Format bleibt, das sie hochladen oder ob es in irgendeiner Weise verarbeitet wird. – Sean

Antwort

15

Dies scheint eine JPEG-Datei zu sein, daher sollten Sie in der Lage sein, diese Daten zusammen mit dem passenden MIME-Typ an den Browser zu senden. Es sollte so etwas ausgeben, das Bild möglich sein:

<img src="data:image/jpeg;base64,<?php echo base64_encode($imageString); ?>"/> 

Aber es könnte auch möglich sein, Dateien von jedes Bildformat speichern in das thumbnailPhoto Attribut. Daher würde ich den Inhalt in eine temporäre Datei legen, die dann direkt vom Server geliefert wird. Sie müssen die Datei über finfo übergeben, um den richtigen Mime-Typ zu erhalten.

So könnten Sie so etwas tun:

$tempFile = tempnam(sys_get_temp_dir(), 'image'); 
file_put_contents($tempFile, $imageString); 
$finfo = new finfo(FILEINFO_MIME_TYPE); 
$mime = explode(';', $finfo->file($tempFile)); 
echo '<img src="data:' . $mime[0] . ';base64,' . base64_encode($imageString) . '"/>'; 
+0

Vielen Dank dafür, ich habe den Code ein wenig verändert, da ich wusste, dass es ein Bild wäre, aber das hat mein Problem definitiv gelöst und funktioniert großartig. – Sean

6

den Code unten versuchen. Es ist eine Anpassung der obigen Antwort.

<?php $result = ldap_search($ad , $dn , $filter, $attributes); $aduser = ldap_get_attributes($ad, ldap_first_entry($ad,$result)); ?>

<img src="data:image/jpeg;base64,<?php echo base64_encode($aduser['thumbnailPhoto'][0]); ?>" /> 
0

, wenn Sie die Fotodaten in ldap heißt speichern „jpegPhoto“ Attribut sollte es durch die Verwendung kodieren base64 erfolgen. Das Lesen des Attributs wird bereits beim Fliegen decodiert.Daher würde ich etwas verwenden weniger modifizierte Code

$tempFile = tempnam(sys_get_temp_dir(), 'image'); 
file_put_contents($tempFile, $imageString); 
$finfo = new finfo(FILEINFO_MIME_TYPE); 
$mime = explode(';', $finfo->file($tempFile)); 
header("Content-Type: $mime"); 
echo $imageString; 

Dies ist direkt php Bild Schreib Beispiel Sie direkt unter Tag verwenden kann img dh

<img src="example.php" />