PHPでLDAPサーバに接続して検索

まずは必要なモジュールをインストール(相変わらずvineなのでapt)
# apt-get install php5
# apt-get install php5-ldap

適当なユーザをLdap adminで登録しといて下記サンプルコードを実行すれば、結果が出力される。
# php5 ./sample.php

↓Ldap Adminの画面

image

↓サンプルコード。ここを参考にちょっと書き直した。

<?php
// LDAP の基本シーケンスは、接続、バインド、検索、検索結果の解釈、
// 接続のクローズです。

echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$objConnect = ldap_connect("localhost");  // 有効な LDAP サーバーに違いない!
echo "connect result is " . $objConnect . "<br />";

if( $objConnect ){

    //バインド
    echo "Binding ...";
    $bBind=ldap_bind( $objConnect );     // これは "匿名" バインドで、通常は読みこみのみのアクセスとなります。
    echo "Bind result is " . $bBind . "<br />";

    // エントリを検索
    $sPerson = "";
    echo "Searching ...";
    $sDN = "ou=Users, o=exbridge, c=JP";
    $sFilter = "(|(sn=$sPerson*)(givenname=$sPerson*))";
    $iSerchID = ldap_search($objConnect, $sDN, $sFilter); 
    echo "Search result is " . $iSerchID . "<br />";
    echo "Number of entires returned is " . ldap_count_entries($objConnect, $iSerchID) . "<br />";

    //検索結果表示
    echo "Getting entries ...<p>";
    $aList = ldap_get_entries($objConnect, $iSerchID);
    echo "Data for " . $aList["count"] . " items returned:<p>";
    for( $i=0; $i<$aList["count"]; $i++ ){
        echo "dn is: " . $aList[$i]["dn"] . "<br />";
        echo "first cn entry is: " . $aList[$i]["cn"][0] . "<br />";
        echo "first email entry is: " . $aList[$i]["mail"][0] . "<br />";
        echo "password is: " . $aList[$i]["userpassword"][0] . "<br /><hr />";
        //var_dump($aList[$i]);
    }

    // クローズ
    echo "Closing connection";
    ldap_close($objConnect);

} else {
    echo "<h4>Unable to connect to LDAP server</h4>";
}
?>