ユーザーが会社のWebサイトにアクセスするためにPHP/LDAPを使用するログインページがあります。以下では、ユーザーのADグループメンバシップを変数に格納し、後でユーザーがどのメンバシップに属しているかに応じてリダイレクトするステートメントを作成しました>PHPを使用してActive Directoryからユーザーのフルネームを取得する
ここで、 Active Directoryのユーザーのフルネームを保存し、後で使用するために保存します。 Active Directoryのユーザーのフルネームを別の変数に格納するために、以下の記述を変更するにはどうすればよいですか?何か案は??
// verify user and password
if($bind = @ldap_bind($ldap, $user . $ldap_usr_dom, $password)) {
// valid
// check presence in groups
$filter = "(sAMAccountName=" . $user . ")";
$attr = array("memberof");
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");
$entries = ldap_get_entries($ldap, $result);
/* I would like to get and store the user's display name here somehow */
ldap_unbind($ldap);
// check groups
foreach($entries[0]['memberof'] as $grps) {
// is manager, break loop
if (strpos($grps, $ldap_manager_group)) { $access = 2; break; }
// is user
if (strpos($grps, $ldap_user_group)) $access = 1;
}
if ($access != 0) {
// establish session variables
$_SESSION['user'] = $user;
$_SESSION['access'] = $access;
return true;
} else {
// user has no rights
return false;
}
} else {
// invalid name or password
return false;
ご協力いただきありがとうございます。
EDIT
はここで今ダミードメインのものと私の完全なPHPのページですが、私は構文エラーを取得していますし、私は問題をすることができます:(、ヘルプやアイデア?ありがとうアレックス初期支援します!
<?php
function authenticate($user, $password) {
// Active Directory server
$ldap_host = "my FQDC DC";
// Active Directory DN
$ldap_dn = "DC=something,DC=something";
// Active Directory user group
$ldap_user_group = "WebUsers";
// Active Directory manager group
$ldap_manager_group = "WebManagers";
// Domain, for purposes of constructing $user
$ldap_usr_dom = "@mycompany.com";
// connect to active directory
$ldap = ldap_connect($ldap_host);
// verify user and password
if($bind = @ldap_bind($ldap, $user . $ldap_usr_dom, $password)) {
// valid
// check presence in groups
$filter = "(sAMAccountName=" . $user . ")";
$attr = array("memberof","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'];
ldap_unbind($ldap);
// check groups
foreach($entries[0]['memberof'] as $grps) {
// is manager, break loop
if (strpos($grps, $ldap_manager_group)) { $access = 2; break; }
// is user
if (strpos($grps, $ldap_user_group)) $access = 1;
}
if ($access != 0) {
// establish session variables
$_SESSION['user'] = $user;
$_SESSION['access'] = $access;
$_SESSION['givenname'] = $givenname;
return true;
} else {
// user has no rights
return false;
}
} else {
// invalid name or password
return false;
}
?>
エラーを投稿できますか? –
こんにちはアレックス、私は最後に括弧を欠いていた。新人ミスには申し訳ありません。 :Sあなたのお手伝いをありがとう! – user1236435