2011-01-17 5 views
1

こんにちは私のADを検索するPHPスクリプトがありますが、複数のDNを検索するにはどうすればいいですか?私はexmampleをphp.netで試してみたが、動作させることはできない。検索複数のAD DNのwithPHP

ヘルプをいただけれ:

<?php echo "<?xml version='1.0' encoding='utf-8' ?>" ?><?php echo "<ul class='LSRes'>" ?> 
    <?php 
    if(isset($_GET['q']) &&!empty($_GET['q'])){ 
    // all your ldap code 

    // Designate a few variables 
    $host = "10.10.10.10"; // Add in your AD host name or IP 
    $user = "DOMAIN\user"; // Add in your AD access account user name 
    $pswd = "password"; // Add in your AD access account user name password 

    $ds = ldap_connect($host) 
      or die("Could not connect!"); 

    // Set version number 
    ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3) 
     or die ("Could not set ldap protocol"); 

    // Binding to ldap server 
    $bd = ldap_bind($ds, $user, $pswd) 
      or die ("Could not bind"); 

    // Create the DN - Add in the OU of your AD 
    $dn[] = "OU=uk,OU=Accounts,DC=mywebsite,DC=com"; 
    $dn[] = "OU=us,OU=Accounts,DC=mywebsite,DC=com"; 

    $id[] = $ds; 
    $id[] = $ds; 


    //$filter = 'samaccountname='.$_POST['username']; 
    $filter = "(|(givenName=".$_GET['q']."*) (sn=".$_GET['q']."*) (displayname=".$_GET['q']."*) (samaccountname=".$_GET['q']."*))"; 



    $result = ldap_search($id,$dn,$filter); 

    $search = false; 

    foreach ($result as $value) { 
     if(ldap_count_entries($ds,$value)>0){ 
      $search = $value; 
      break; 
     } 
    } 

    if($search){ 
     $entries = ldap_get_entries($ds, $search); 
    } 


    if ($entries["count"] > 0) { 
    for ($i=0; $i<$entries["count"]; $i++) { 

    echo "<span class='LSstyle'>Name: <strong><a href=\"mailto:".$entries[$i]["mail"][0]."\">".$entries[$i]["displayname"][0]." ".$entries[$i]["sn"][0]."</a></strong></span><br />"; 
    echo "<span class='LSstyle'>Short name: <strong>".$entries[$i]["samaccountname"][0]."</strong></span><br />"; 
    echo "<span class='LSstyle'>Phone: <strong>".$entries[$i]["telephonenumber"][0]."</strong></span><br />"; 
    echo "<span class='LSstyle'>Title: <strong>".$entries[$i]["title"][0]."</strong></span><br />"; 
    echo "<span class='LSstyle'>Dept: <strong>".$entries[$i]["department"][0]."</strong></span></p>"; 
    } 
    } else { 
    echo "<span class='LSstyle_noresults'><strong>No results found</strong></span>"; 
    } 
    ldap_unbind($ad); 
    } 
    ?> 
+0

何が問題なのですか?エラーはありますか? $ dnをループするだけでいいのではないでしょうか?もう一度ldap_searchを実行しますか? –

答えて

1

ldap_searchが$ base_dnのように、アレイをとらないようViper_Sbが示唆したように、あなたはおそらくループの$ DNになります見て。

+0

私は検索を実行し、結果は最初のDNから返されます。私は2番目の検索を実行し、2番目のDBから3番目の検索結果を取得し、最初のDNから結果を取得し、各DNの結果を交互に続けます。 ループについて詳しく説明できますか? ありがとうございます – Mat

+0

私はPHPマニュアルから厳密に私の情報を基にしています - 私は実際にそれを使用していません。 foreach($ dnを$ d){ $ result = ldap_search($ id、$ d、$ filter); ... } – Chris

関連する問題