Obtenir le Nom Complet de l'utilisateur à partir d'Active Directory à l'aide de PHP
J'ai une page de connexion qui utilise PHP/LDAP pour mes utilisateurs d'accéder à un site web de l'entreprise. Ci-dessous, j'ai créé une déclaration qui stocke l'utilisateur de l'AD l'appartenance à un groupe dans une variable, pour être utilisé plus tard pour rediriger en fonction de l'adhésion de l'utilisateur dans AD>
Maintenant, maintenant, j'aimerais aussi ajouter la possibilité d'obtenir le nom complet de l'utilisateur à partir d'Active Directory, et les stocker pour une utilisation ultérieure. Comment puis-je modifier ma déclaration ci-dessous pour stocker le nom complet de l'utilisateur à partir d'Active Directory dans une autre variable? Des idées??
//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;
Merci d'avance pour toute aide/suggestions!
MODIFIER
Voici maintenant ma page PHP avec mannequin domaine des trucs, mais j'obtiens une erreur de syntaxe et je peux le problème 🙁 et de l'aide ou idée? Merci Alex pour la première aide !
<?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;
}
?>
- Pouvez-vous afficher le message d'erreur?
- Bonjour Alex, j'ai été absent un crochet à la fin; désolé pour l'erreur de débutant. :S Merci à tous pour votre aide!
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Espère que cette aide. Lorsque vous lisez à partir de ldap, vous pouvez voir les champs et la carte à une variable de session.
Cogner un vieux thread. J'ai besoin d'entrer le prénom et nom de famille et a ajouté " sn " pour les attributs et ajouté les variables de session pour référence ultérieure dans un autre script comme ceci:
Comment ai-je accès à des variables de session dans d'autres scripts:
Mise à jour précédente authentifier script: