2016-05-25 47 views
1

ユーザの名前を取得して変数を設定し、それを使用してユーザをより歓迎する必要があります。LDAPからユーザ名を取得するPHP

例:luis.linoでログインして、$ name = "Luis Lino"と設定します。ここで、Luis LinoはLDAP経由でADから取得されます。

ように、私は「ルイス・リノようこそ、私たちはあなたがここにあなたの時間をお楽しみください」

を行うことができます私はこのコードを使用しています:私はちょうど「ログイン」の部分を使用している場合

$myusername = mysqli_real_escape_string($db,$_POST['username']) . "@domain.com"; 
     $mypassword = mysqli_real_escape_string($db,$_POST['password']); 
     $local = $_POST['filial']; 
     $ldap = ldap_connect("ldap://domain.com"); 
     if ($bind = ldap_bind($ldap, $myusername, $mypassword)) 
     { 
      $_SESSION['login_user'] = $myusername; 
      $filter = "(&(sAMAccountName={$myusername}))"; 
      $ldap_dn = "dc=domain.com"; 
      $attr = array("givenname"); 
      $result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server"); 
      $entries = ldap_get_entries($ldap, $result); 
      $givenname = $entries[0]['givenname'][0]; 
      ldap_unbind($ldap); 

      setcookie("name", $givenname, time() + (86400 * 30), "/"); 

      setcookie("sessao", $local, time() + (86400 * 30), "/"); // 86400 = 1 dia 
      header("location: welcome.php"); 
     } 

をそれ完璧に動作しますが、上記のコードで、私は次のエラーを取得する:

Warning: ldap_search(): Search: Client Loop in C:\wamp\www\OperPHP\index.php on line 20 

私はすでにポストのロットに見えたが、どれも、誰もがこの問題を解決する方法を知って、私の問題を解決していませんか?

答えて

1

私は(ちょうどldap_connect()以下の追加を必要とするLDAPに接続するための次を変更しようとするだろう:

$ldap = ldap_connect("ldap://domain.com"); 
// Set to LDAPv3 protocol, disable referrals... 
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); 

あなたが取得しているエラーに基づいて、それは紹介をやろうとして立ち往生しているように、それが思わも。あなたのフィルタは$filter = "(sAMAccountName={$myusername})";に簡略化することができます。これは単にあなたが与えている例によるものなのかどうかは分かりませんが、通常はベースDN(あなたの場合は$ldap_dn)を$ldap_dn = "dc=domain,dc=com";

関連する問題