nolookpass8
Messages postés7Date d'inscriptionmercredi 20 juin 2012StatutMembreDernière intervention25 janvier 2013
-
20 juin 2012 à 16:54
Salut à tous !
Je me suis inspiré de 2 bouts de code puis j'ai adapté à mon cas :
<?php
$user = htmlentities($_POST["user"]); // Récupération de la variable user
$pass = htmlentities($_POST["pass"]); // Récupération de la variable pass
$ds = ldap_connect("adresseIP du serveur ldap"); // On initialise la connexion au domaine (doit être un serveur LDAP valide !)
$r = ldap_bind($ds,"$user@trem.bod","$pass") or die("Connexion impossible"); // Connexion avec user et pass
echo "Le résultat de connexion est $ds "; // On affiche le résultat de la connexion LDAP
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); //Option à ajoutée si vous utiliser Windows server2k3
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); //Option à ajoutée si vous utiliser Windows server2k3
et :
<?php
// informations de connexions, ici user -->> login et pass -->> mot de passe
$ldap_host = "ipserveur ldap"; // l'adresse du serveur LDAP
$base_dn = "DC=T***,DC=B**"; // nom du domaine
$user = "cn=".$_POST['user']; // on traite les information recoltées via le formulaire de la page index.php : user et pass
$password = $_POST['pass'];
$admin="admin"; // le groupe auquel appartient les admin et les membres
$membres="membres";
$connect = ldap_connect($ldap_host) // connexion en anonymous
or exit(">>Connexion au serveur LDAP echoué<<");
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3); // on passe le LDAP en version 3, necessaire pour travailler avec le AD
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$read = ldap_search($connect,$base_dn,$user) // recherche sur le serveur ldap avec paramètres : ad du serveur, domaine et user
or exit(">>erreur lors de la recherche<<");
$info = ldap_get_entries($connect, $read); // ldap_get_entries : lit toutes les entrées du résultat
if ( preg_match("!".$admin."!",$info[0]["dn"] ) ){ // si le user trouvé est 1 admin :
$bind = ldap_bind($connect,$info[0]["dn"],$password); // ldap_bind : authentification au serveur LDAP
if ( $bind == FALSE ){ // si le BIND est FALSE
echo 'il est admin mais faux mdp'; // le mot de passe est erronée
header("location: index.php"); // redirection vers index.php
}
elseif ( $bind == TRUE ) // si BIND est TRUE : on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
{
echo 'connexion réussie groupe admin';
header("location: saisirAppel.php"); // redirection vers saisirAppel.php
}
}
elseif ( preg_match("!".$membres."!",$info[0]["dn"]) ) // si le user trouvé est 1 membre :
{
$bind = ldap_bind($connect,$info[0]["dn"],$password); // authentification au serveur LDAP
if ( $bind == FALSE ){ // si le BIND est FALSE
echo 'il est membre mais faux mdp'; //le mot de passe est erronée
header("location: index.php"); // redirection
}
elseif ( $bind == TRUE ) // on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
{
echo 'connexion réussie groupe membres';
header("location: saisirAppel.php"); // redirection vers saisirAppel.php
}
}
else // le user n'a pas pu être trouvé
{
echo 'nom de user invalide'; // afficher user invalide
header("location: index.php"); // redirection
}
ldap_close($connect); // déconnexion du serveur ldap