« Commandes LDAP avec PHP » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « == 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... ») |
|||
| Ligne 8 : | Ligne 8 : | ||
* '''L'utilisateur a été trouvé :''' retourne un tableau avec les informations de l'utilisateur. | * '''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. | * '''L'utilisateur n'a pas été trouvé :''' retourne le code d'erreur 404. | ||
* '''La requête n'a pas aboutie '' | * '''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 | <?php | ||
| Ligne 62 : | Ligne 63 : | ||
ldap_unbind($ldap_connection); // Clean up after ourselves. | ldap_unbind($ldap_connection); // Clean up after ourselves. | ||
} else { | } else { | ||
$result = " | $result = "500"; | ||
} | } | ||
return $result; | return $result; | ||
| Ligne 76 : | Ligne 77 : | ||
print_r($ldap_search_result); | 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); | |||
} | |||
?> | ?> | ||
Dernière version du 8 avril 2025 à 16:20
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);
}
?>