Commandes LDAP avec PHP
Aller à la navigation
Aller à la recherche
Rechercher un utilisateur dans l'annuaire
La fonction attend les informations suivantes :
- Nom de la personne recherchée.
- Prénom de la personne recherchée.
La fonction retournera le résultats suivant en fonction des conditions suivantes :
- L'utilisateur a été trouvé : retourne un tableau avec les informations de l'utilisateur.
- L'utilisateur n'a pas été trouvé : retourne le code d'erreur 404.
- La requête n'a pas aboutie : retourne le code d'erreur 500.
- La requête est interdite : retourne le code d'erreur 403.
<?php # CONFIG. CONNECTEUR AD # ------------------------------ # À renseigner # Domaine ActiveDirectory define("LDAP_DOMAIN","ncad.fr"); # Serveur ActiveDirectory define("LDAP_SERVER_NAME","ldaps://".LDAP_DOMAIN); # Compte AD utilisé pour exécuter la commande define("LDAP_SERVER_LOGIN","JOB0001-NCAD"); # Mot de passe du compte AD define("LDAP_SERVER_PASSWORD","M0n#P45-sW0rDSuQ3Rc0pl!qu3"); # OU recherche comptes utilisateurs define("LDAP_DN","OU=FIGEAC,DC=ncad,DC=fr"); # FONCTION ldap_search_user # ------------------------------ function ldap_search_user($firstname, $lastname) { if ($ldap_connection=@ldap_connect(LDAP_SERVER_NAME)) { $ldapBind = ldap_bind($ldap_connection,LDAP_SERVER_LOGIN."@".LDAP_DOMAIN,LDAP_SERVER_PASSWORD); ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version'); ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); // We need this for doing an LDAP search. $ldap_base_dn = LDAP_DN; $search_filter = "(&(sn=$firstname)(givenname=$lastname))"; $attributes = array(); $attributes[] = 'givenname'; $attributes[] = 'mail'; $attributes[] = 'samaccountname'; $attributes[] = 'sn'; $attributes[] = 'department'; $result = ldap_search($ldap_connection, $ldap_base_dn, $search_filter, $attributes); if (FALSE !== $result){ $entries = ldap_get_entries($ldap_connection, $result); if ($entries['count'] >= 1) { $result = $entries; } else { $result = "404"; } } else { $result = "403"; } ldap_unbind($ldap_connection); // Clean up after ourselves. } else { $result = "500"; } return $result; } # TEST DE LA FONCTION # ------------------------------ $ldap_search_result = ldap_search_user( "CACHELOU", "Nicolas" ); print_r($ldap_search_result); ?>
Modifier la valeur d'un attribut pour un compte donné
La fonction attend les informations suivantes :
- Nom d'utilisateur Windows de la personne recherchée.
La fonction retournera le résultats suivant en fonction des conditions suivantes :
- Le compte a été trouvé : retourne un tableau avec les informations de l'utilisateur.
- Le compte n'a pas été trouvé : retourne le code d'erreur 404.
- La requête n'a pas aboutie (serveur indisponible ou requête interdite) : retourne le code d'erreur 403.
<?php # CONFIG. CONNECTEUR AD # ------------------------------ # À renseigner # Domaine ActiveDirectory define("LDAP_DOMAIN","ncad.fr"); # Serveur ActiveDirectory define("LDAP_SERVER_NAME","ldaps://".LDAP_DOMAIN); # Compte AD utilisé pour exécuter la commande define("LDAP_SERVER_LOGIN","JOB0001-NCAD"); # Mot de passe du compte AD define("LDAP_SERVER_PASSWORD","M0n#P45-sW0rDSuQ3Rc0pl!qu3"); # OU recherche comptes utilisateurs define("LDAP_DN","OU=FIGEAC,DC=ncad,DC=fr"); # FONCTION ldap_update_attribute # ------------------------------ function ldap_update_attribute($user, $attribute_name, $value) { error_reporting(0); $ldap_connection = ldap_connect(LDAP_SERVER_NAME); ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); // We need this for doing an LDAP search. ldap_bind($ldap_connection,LDAP_SERVER_LOGIN."@".LDAP_DOMAIN,LDAP_SERVER_PASSWORD); $user_search = ldap_search($ldap_connection,LDAP_DN,"(&(sAMAccountName=$user))"); $user_get = ldap_get_entries($ldap_connection, $user_search); $user_entry = ldap_first_entry($ldap_connection, $user_search); $user_dn = ldap_get_dn($ldap_connection, $user_entry); if (!$user_get) { return 404; } $attribute[$attribute_name] = array($value); $replace=ldap_mod_replace($ldap_connection, $user_dn, $attribute); $message[]=$user_dn; ldap_close($ldap_connection); } ?>