2016-05-25 3 views
1

Мне нужно получить имя моего пользователя, чтобы установить переменную и использовать ее для лучшего использования для пользователя.Получить имя пользователя из LDAP PHP

Пример: Войти с luis.lino и установить $ name = "Luis Lino", где Luis Lino извлекается из AD через LDAP.

Как так что я могу сделать «Добро пожаловать Луис Лино, мы надеемся, вам понравится ваше время здесь»

Я использую этот код:

$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 (необходимо добавлений ниже ldap_connect():.

$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";.

Смежные вопросы