1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
<?php
// informations de connexions
$ldap_host = "172.**.**.**"; // l'adresse du serveur LDAP
$base_dn = "DC=****,DC=***"; // nom du domaine
$user = "cn=".$_POST['user']; // on traite les information recoltées
$password = $_POST['pass'];
$admin="admin"; // indiquez ici le groupe auquels appartient les admin et les membres. dans mon exemple, j'ai un o=admin et un o=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)
or exit(">>erreur lors de la recherche<<");
$info = ldap_get_entries($connect, $read);
if ( preg_match("!".$admin."!",$info[0]["dn"] ) ) // si le user trouvé est admin :
{
$bind = ldap_bind($connect,$info[0]["dn"],$password);
if ( $bind == FALSE ) // si le BIND est FALSE, le mot de passe est erronée
// echo( " il est admin mais faux mdp");
header("location: index.php");
elseif ( $bind == TRUE ) // on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
{
header("location: index.php");
}
}
elseif ( preg_match("!".$membres."!",$info[0]["dn"]) ) // si le user trouvé est membres :
{
$bind = ldap_bind($connect,$info[0]["dn"],$password);
if ( $bind == FALSE ) // si le BIND est FALSE, le mot de passe est erronée
// echo( " il est membre mais faux mdp");
header("location: index.php");
elseif ( $bind == TRUE ) // on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
{
header("location: index.php");
}
}
else // le user n'a pas pu être trouvé
{
// echo "nom de user invalide";
header("location: index.php");
}
ldap_close($connect);
?> |
Partager