Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONNEXION LDAP AVEC LOGIN MOT DE PASSE EN PHP


Information sur la source

Catégorie :Application Classé sous : login, connexion, ldap, active, directory Niveau : Débutant Date de création : 04/08/2005 Date de mise à jour : 04/08/2005 21:05:14 Vu : 23 807

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

ce code permet de verifier l'identité d'une personne se connectant a un annuaire LDAP ( dans mon cas Active directory ) la connexion se fait en anonymous et il est necessaire de creer une page a part avec un formulaire qui pointera sur cette page. en cas de succès d'identification, l'utilisateur est redirigé sur une page, sinon il revient sur la page de Login / mot de passe.
 

Source

  • <?php
  • // informations de connexions
  • $ldap_host = "localhost"; //inserer ici l'addresse du serveur LDAP
  • $base_dn = "DC=GUESSANT,DC=ORG";
  • $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: auth_ldap.php?result='0'");
  • 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: auth_ldap.php?result='0'");
  • 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: auth_ldap.php?result='1'");
  • }
  • ldap_close($connect);
  • ?>
<?php
// informations de connexions

$ldap_host = "localhost";  //inserer ici l'addresse du serveur LDAP
$base_dn = "DC=GUESSANT,DC=ORG";

$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: auth_ldap.php?result='0'");
	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: auth_ldap.php?result='0'");
	
	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: auth_ldap.php?result='1'");
}


ldap_close($connect);
?> 

Conclusion

pour info , le test s'effectue sur le ldap_bind qui retourne une erreur en cas d'echec. mais comme la redirection est rapide on ne le voit pas.
 

Historique

04 août 2005 21:05:14 :
jai tenu compte de la 1 ere remarque, c'était une erreur de ma part de laisser les echo qui n'ont rien a faire la et qui dans les standards W3C pouvaient géner sur certains navigateur l'utilisation de header(location: xxxx)

Commentaires et avis

signaler à un administrateur
Commentaire de garfield90 le 04/08/2005 18:45:11

commente
echo "Le user est admin"; et echo "Le user est membre";
car la on peut faire du BRUTE FORCE pour trouvé le mdp étant donné que l'on sait que le login existe

sinon le code a l'air correct, pas d'annuaire LDAP sous la main ;)

signaler à un administrateur
Commentaire de glad le 05/08/2005 08:41:58

Salut,

Cool, justement je m'embête avec ça depuis un certain temps. J'arrivais partiellement à l'utiliser mais pas bien. Et là je vois deux ou trois options que je n'utilisais pas !
Merci :-)
Si t'as d'autres trucs avec AD, je suis intéressé.
Bonne continuation.

à ++

signaler à un administrateur
Commentaire de gadou le 08/12/2005 17:49:43

bonjour,
je cherche exactement la meme chose mais en ASP
je ne trouve pas...
quelqu'un peut m'aider.?
merci

signaler à un administrateur
Commentaire de Toto102 le 09/01/2006 12:51:07

salut;
pour l ASP vous pouvez voir le lien suivant:
http://www.rallenhome.com/books/ad2e/code.html
bonne chance

signaler à un administrateur
Commentaire de crashyear le 23/10/2006 16:13:49

Bonjour,

Je viens de tester ce code qui m'a l'air bien... mais moi j'ai un souci, il m'affiche le message suivant >>erreur lors de la recherche<< qui se trouve à la ligne 22.
Comme je n'y connai rien en AD et en LDAP quelqu'un pourrait-il m'aider à comprendre?

Merci

signaler à un administrateur
Commentaire de crashyear le 23/10/2006 17:36:08

c'est bon merci pour toutes ces réponses... lol euh je n'avait juste pas les droits nécessaire j'ai donc vu avec mon admin réseau et voila!!!

signaler à un administrateur
Commentaire de suzye le 15/03/2007 14:10:28

bonjour a vous j'ai un probléme de connection sur l'annuaire ldap avec un login et un password en php quelqu'un pourrait il m'aider et qd je teste ce code j'ai une erreur

signaler à un administrateur
Commentaire de dtraversa83 le 21/03/2007 14:41:23

j'ai moi aussi un pb que je n'arrive pas a résoudre : >>erreur lors de la recherche<<
comment résoudre ce pb ?

signaler à un administrateur
Commentaire de foxmaster le 17/12/2007 15:40:52

Bonjour moi aussi j'ai le meme soucis ça bloque sur erreur de la recherche, j'ai simplifé le code pour avoir uniquement ce ci:
<?php
// informations de connexions
$ldap_host = "localhost";  //inserer ici l'addresse du serveur LDAP
$base_dn = "DC=GUESSANT,DC=ORG";
$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<<");
ldap_close($connect);

?>
en mettant mes parametres bien évidemment mais ça me met cete erreur ...

Warning: ldap_search() [function.ldap-search]: Search: Operations error in E:\intranet\eiffagest_interim\Untitled-2.php on line 11
>>erreur lors de la recherche<<

merci pour votre aide

signaler à un administrateur
Commentaire de zobinems le 17/01/2008 17:32:58

c'est normal que ca ne marche pas
Active Directory n'accepte pas les connection en anonyme

signaler à un administrateur
Commentaire de angellestat le 01/06/2009 12:41:03

Bonjour, jusqu'a present le probleme de recherche n'est pas resolu.
que faut il faire alors? un Bind authentifié avant de lancher la recherche?
Car dans le code ci dessous il recherche avant de faire ldap_bind;
De plus le ldap_connect ne prend pas de parametre d'authentification
Alors quelqu'un aurait il une idee pour y parvenir?
merci
ps: les mot de passe dans active D sont cryptés alors comment les tester avec celui envoyé par formulaire?

signaler à un administrateur
Commentaire de zobinems le 01/06/2009 16:37:44

si tu veux tester les mot de passe AD il te suffit de te connecter avec ce couple login/mdp, ainsi tu vois si tu est rejeté ou non

signaler à un administrateur
Commentaire de ERDOGANAK le 02/06/2009 14:56:27

Bonjour,

Je suis en stage, et j'obtiens la même erreur que vous:

Warning: Wrong parameter count for ldap_search() in C:\wamp\www\debut\traitement.php on line 16
>>erreur lors de la recherche<<

Quelqu'un a une solution ??

signaler à un administrateur
Commentaire de zobinems le 02/06/2009 15:57:41

pas facile sans le code ...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

php Active directory LDAP [ par weedtrompette ] Bonjour &#224; tous,Juste une petite question. J'&#233;tudie actuellement la possibilit&#233; pour une appli web d'acc&#233;der &#224; un annuaire act connexion à Active Directory via php [ par jalal2007 ] Salut tout j'ai un probléme de connextion à AD via PHP. a tous les pro du php [ par vrkill2 ] bonjour a tous qui peux mexpliqué clairement comment utiliser se code svp merci     &lt;?php // Démarage de la session PHP4// Il faut tou Lister utilisateur Active Directory [ par rouliendelavegas ] Bonjour,Quelle fonction permet de lister les utilisateur d'un active directory?Merci Creation de compte Active Directory via un page Web [ par karimod ] Bonjour, Je suis actuellement en train de faire un projet sur la mise en place d'un portail captif (pfsense) dans lequel les utilisateurs devront s'au connexion avec login et pasword [ par stanly145 ] je suis vraiment débutent en phpet je vx savoir comment faire pr realiser une connexion avec login et pasword apartir dune base de donné sql "easy php verification du login dans la base [ par elksibi ] Bonsoir,J'ai un probleme avec la redirection header ("location") et la verification du mot de passe dans la base en PHP.D'abord, j'ai un formulaire, q Connexion à une application PHP en en passant par Active Directory [ par anaa21 ] Bonjour à tous,J'ai deux postes:Le premier est un poste client sur lequel j'ai installé Windows XP.Le deuxième post importation de données depuis Active Directory vers MySQL [ par somehowsomeway ] Salut, SVP aidez moi     je dispose, dans un réseau d'ordinateurs, d'un annuaire Active Directory sur une machine (windows); jè installé en local un f pb suppression cookies [ par joebuz ] Bonjour, j'avais une section membre toute b&#234;te avec un formulaire de log sur l'index renvoyant a la page connexion et une fois logg&#233; un bout


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.