PHPでLDAPサーバに接続して検索
まずは必要なモジュールをインストール(相変わらずvineなのでapt)
# apt-get install php5
# apt-get install php5-ldap
適当なユーザをLdap adminで登録しといて下記サンプルコードを実行すれば、結果が出力される。
# php5 ./sample.php
↓Ldap Adminの画面
↓サンプルコード。ここを参考にちょっと書き直した。
<?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>";
}
?>