Php avec ldap
titiroy
Messages postés
1
Statut
Membre
-
jordane45 Messages postés 40053 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 40053 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Grand débutant en programmation, j'ai une base ldap avec des noms et des prenoms, j'aimerai quand la personne ce connecte voir afficher son identité. Comment faire, je n'arrive pas à trouver quelque chose de valide
merci
Grand débutant en programmation, j'ai une base ldap avec des noms et des prenoms, j'aimerai quand la personne ce connecte voir afficher son identité. Comment faire, je n'arrive pas à trouver quelque chose de valide
merci
A voir également:
- Php avec ldap
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Client ldap windows - Télécharger - Édition & Programmation
- Retour à la ligne php ✓ - Forum PHP
- Retour a la ligne avec Echo comment faire ? - Forum Webmastering
1 réponse
Bonjour,
TU peux éventuellement te servir d'un truc de ce genre :
Et pour l'utiliser... il suffit d'appeler la fonction :
TU peux éventuellement te servir d'un truc de ce genre :
<?php
/**
* Class d'authentification via LDAP
*
* @author a178017
*/
/*
*/
class Authentification {
//put your code here
public $logs=array();
private $login,
$password,
$sh1password,
$md5password,
$ldapSrv,
$ldapPort,
$ldapDN,
$ldapPWD,
$ldapOU,
$_ds,
$_etat_connexion_LDAP,
$_cnx_erreur=array();
function __construct($login,$password,$ldapSrv=NULL,$ldapOU=Null,$LdapPort=NULL,$ldapDN='uid',$ldapDS=NULL,$ldapPWD=NULL) {
if(empty($login) && empty($password)){
$this->_cnx_erreur[] = "LANG_LOGIN_NO_LOGINPWD";
}else{
if(empty($login)){$this->_cnx_erreur[] = "LANG_LOGIN_NO_LOGIN";}
if(empty($password)){$this->_cnx_erreur[] = "LANG_LOGIN_NO_PWD";}
}
// On alimente les variables de la class
$this->login = $login;
$this->password = $password;
$this->md5Password = md5($password);
$this->sh1password = sha1($password);
$this->ldapSrv = $ldapSrv;
$this->ldapOU = $ldapOU;
$this->ldapPort=$LdapPort;
$this->ldapDN=$ldapDN;
$this->ldapPWD=$ldapPWD;
$this->ldapDS=$ldapDS;
}
/**
* Fermeture de la connexion LDAP lors de la destruction de l'objet
*/
function __destruct() {
//On clos la connexion LDAP
if($this->_etat_connexion_LDAP) {
ldap_close($this->_ds);
}
}
/*-------------------------------------------------------------------------------------------------------------------------*/
/* CONNEXION
/*-------------------------------------------------------------------------------------------------------------------------*/
/**
* Fonction a appeller pour la connexion LDAP
* Script de connexion
* @return Array
*/
public function Connexion(){
//Lancement de la connexion et enregistrement de l'etat
$cnLdap= $this->CnxLdap();
$arrCNX['CNX_ERREUR']=$this->_cnx_erreur;
$arrCNX['login']=$this->login;
$arrCNX['pwd']=$this->password;
$arrCNX['ETAT_CNX_LDAP']=$cnLdap;
$arrCNX['logs']=$this->logs;
$arrCNX['LDAP_SRV']=$this->ldapSrv;
$arrCNX['LDAP_OU']=$this->ldapOU;
return $arrCNX;
}// fin de la fonction Connexion()
//-------------------------------------------
Private function CnxLdap(){
$this->_etat_connexion_LDAP = $this->_Ldap_connect();
return $this->match_login_password($this->login, $this->password,$this->ldapDN);
}
/**
* Permet de lancer une connexion a l'annuaire LDAP
* AuthentificationLdap::_server doit etre defini precedemment
* @return bool Renvoie vrai si la connexion est ok. Renvoie false si la connexion est impossible.
*/
private function _Ldap_connect() {
$this->_ds=@ldap_connect($this->ldapSrv, $this->ldapPort);
//On modifie le timeout. Max 5 secondes
ldap_set_option($this->_ds, LDAP_OPT_TIMELIMIT, 20);
if($this->_ds) {
$bind = @ldap_bind($this->_ds, $this->ldap_login, $this->ldapPWD);
if($bind) {
$this->_insert_logs("Etat de la connexion : connecté à " . $this->ldapSrv);
return true;
}
else {
$this->_insert_logs("Etat de la connexion : connexion impossible à " . $this->ldapSrv);
$this->_cnx_erreur[] = "LANG_LOGIN_LDAP_CNX_ERROR";
return false;
}
}else{
$this->_insert_logs("no DS -Serveur:".$this->ldapSrv." -port:".$this->ldapPort);
$this->_cnx_erreur[] = "LANG_LOGIN_LDAP_CNX_ERROR";
}
}
/**
* Recupere les infos demandees sur la base ldap (nom, prenom, email...)
* @param string $login Login LDAP
* @param array $array_return Tableau specifiant les elements à rechercher
* @param string $type_rech Recherche par login LDAP ou par matricule ATOS ('uid' ou 'employeenumber')
* @return bool|array Renvoie valeurs demandees sous forme de tableau OU renvoie false si rien n'est trouve
*/
public function view_infos_login($login, $array_return, $type_rech) {
if($this->_etat_connexion_LDAP){
$ldap_filter="($type_rech=".$login.")";
$ldap_search = @ldap_search($this->_ds, $this->ldapOU, $ldap_filter, $array_return);
$ldap_result = @ldap_get_entries($this->_ds, $ldap_search);
if($ldap_result['count'] != 1) {
$this->_insert_logs("Recherche des infos demandées impossible, la recherche renvoie plusieurs résultats pour ce login. ldap_filter=".$ldap_filter);
return false;
}
else {
$this->_insert_logs("Recherche d'infos pour le login $login. Envoi du résultat");
return $ldap_result;
}
}
else {
$this->_insert_logs("Recherche d'infos pour ce login impossible. La connexion à la base LDAP n'a pu étre établie.");
$this->_cnx_erreur[] = "LANG_LOGIN_LDAP_CNX_ERROR";
return false;
}
}
/**
* Methode match_login_password()
* Fait un bind du login et password sur la base ldap
* afin de voir si ceux-ci correspondent
*
* @param string $login Login a verifier
* @param string $password Password a verifier
* @return bool Retourne true si le login et password correspondent
*/
private function match_login_password($login, $password) {
if($this->_etat_connexion_LDAP) {
$ldap_return = array("dn");
$ldap_result = $this->view_infos_login($login, $ldap_return,$this->ldapDN);
if($ldap_result) {
$ldap_testbind = @ldap_bind($this->_ds, $ldap_result[0]['dn'], $password);
if($ldap_testbind) {
$this->_insert_logs("Le login et Password correspondent.");
return true;
}
else {
$this->_insert_logs("Le login et Password ne correspondent pas.");
$this->_cnx_erreur[] = "LANG_LOGIN_CNX_MATCH";
return false;
}
}
else {
$this->_insert_logs("Impossible de matcher le login et password. Probleme lors de la requête de recherche.");
return false;
}
}
else {
$this->_insert_logs("Recherche du login-Password impossible, la connexion au serveur n'a pu être établie.");
$this->_cnx_erreur[] = "LANG_LOGIN_LDAP_CNX_ERROR";
return false;
}
}
/**
* Methode insert_logs()
* Permet d'inserer de nouveaux logs
*
* @param string $log Log a inserer
* @return void()
*/
protected function _insert_logs($log) {
$this->logs[] = $log;
}
//************************************************************************************/
}// FIN DE LA CLASS
//************************************************************************************/
?>
Et pour l'utiliser... il suffit d'appeler la fonction :
$oLdap = new Authentification($login,$password,$ldapSrv,$ldapOU,$LdapPort,$ldapDS,$ldapPWD); $cnx = oLdap->Connexion();