我需要检索用户的名字来设置变量并使用它来更好地欢迎用户。
示例:使用luis.lino
登录并设置$ name = "Luis Lino"
,其中通过LDAP从AD检索Luis Lino
。
我可以做到这一点"欢迎Luis Lino,我们希望你在这里享受你的时间"
我正在使用此代码:
$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
我已经查了很多帖子,但没有解决我的问题,有谁知道如何解决这个问题?
答案 0 :(得分: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";
。