2016-09-29 2 views
0

私は私のウェブサイトをADのLDAPに接続し、ユーザーのログオンからデータを取得しようとしていますが、私の問題はユーザーのログオン時にユーザーのマネージャー名を取得する必要があります。私は「ロージー」ですが、私はそれを得るために知っていないだけでマネージャ名を取得する必要がありCN=rosie,OU=AllUser,DC=xyz,DC=localは、どのように私はPHPの広告からマネージャー名を取得できますか?

この私のコード

$ldap_host ="servername"; 
$ldap_port = "port"; 
$ldap_dn = "OU=AllUser,DC=abc,DC=local"; 
$ldap_usr_dom = '@abc.local'; 
$ldap_it_group = "IT"; 
$ldap = ldap_connect($ldap_host,$ldap_port) or die("Could not connect to ".$ldap_host); 
$bind = @ldap_bind($ldap, $user.$ldap_usr_dom, $password) or die("cant bind"); 
if($bind) { 
    $filter = "(&(objectClass=*)(sAMAccountName=".$user."))"; 
    $attr = array("manager"); 
    $result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server"); 
    $entries = ldap_get_entries($ldap, $result); 
    ldap_unbind($ldap); 
    for ($i=0; $i<$entries["count"]; $i++) { 
     echo "Manager is: ". $entries[0]["manager"][0]."<p>"; 
    } 
+0

大丈夫、質問...「rosie」値以外のすべてを取り除くのはなぜですか? – Abela

+0

これは管理者の名前です。私は、マネージャー –

+0

のCNだけが私が提案したものである必要があります。_obviously_ 'rosie'は動的になります。 – Abela

答えて

2

を助けてください、この方法は、それを行うための全く恐ろしい方法です。正規表現をやっている方が良いでしょうが、これは正規表現の人が出て来るまで、素早くハックする仕事です。

$manager = str_replace('CN=','',strstr($entries[0]["manager"][0],',',true)); 
echo "Manager is: ". $manager ."<p>"; 
+0

はい、私はldapで広告をするのは新しいです、私はそれをする方法がわかりません、恐ろしいです。ご指摘ありがとうございます。 –

+0

php + ADのコアコードは、PHPの乗組員から深刻な注意を払う必要があります。何人かの人々がそれを使用していると仮定します。なぜ、私の唯一の推測になりえますか?私がこれまでに使っていた唯一の時間は、パワースクールで悩んでいた。とにかく、上記は私の最後で動作するように見えるので、それはあなたのために働くことを願っています。 – Abela

関連する問題