6.Le langage PHP

6.16.LDAP

6.16.3.Accès via les fonctions de l'extension ldap

6.16.3.1.Introduction

Nous avons vu dans le chapitre précédent comment installer l'extension ldap nécessaire à l'accès en PHP à un annuaire LDAP.
Dans ce chapitre, nous verrons comment accéder à l'annuaire en utilisant directement les fonctions PHP fournies par cette extension (une autre solution consiste à utiliser une bibliothèque simplifiant l'utilisation de ces fonctions, comme avec zend-ldap[en savoir plus]).
Nous procéderons en 3 temps:
  1. La connexion (avec authentification, choix du protocole)
  2. L'accès en lecture (pour effectuer une recherche)
  3. L'accès en écriture (pour ajouter des données)

6.16.3.2.Connexion, authentification, paramétrage

6.16.3.2.1.La connexion (son paramétrage)

6.16.3.2.1.1.ldap_connect()

La connexion (ou plus généralement la déclaration des paramètres de connexion) se fait par l'intermédiaire de la fonction ldap_connect() avec pour paramètre la chaîne de caractères précisant l'adresse du serveur LDAP et éventuellement un second paramètre pour préciser le port d'écoute (notamment si celui-ci diffère du port par défaut 389).
<?php
$ldapURL = 'ldap.forumsys.com';
$ldapPort = 389; // Port par défaut = 389

$ldap = ldap_connect($ldapURL, $ldapPort);
if (false === $ldap) die('Echec de la connexion');
?>
Cette fonction retourne une ressource (LDAP) qui devra être passée en paramètre des fonctions appelées ultérieurement.
rem
  • Cette fonction a de bonnes chances de ne pas lever d'erreur y compris avec une adresse de serveur LDAP invalide. En effet, la connexion proprement dite ne se fait pas forcément au moment de cet appel mais plus tard (c'est tout du moins ce qu'il se passe avec OpenLDAP 2).

6.16.3.2.1.2.La sélection de la version de protocole

Si votre serveur LDAP n'utilise pas la version 2 du protocole LDAP pour communiquer alors vous devrez obligatoirement en préciser la version via la fonction de configuration ldap_set_option(). Cette fonction attend 3 paramètres:
  • La ressource LDAP (retournée par ldap_connect())
  • Une constante identifiant le paramètre à configurer (dans ce cas précis LDAP_OPT_PROTOCOL_VERSION)
  • La valeur du paramètre (ici, probablement, 2 ou 3 pour la version du protocole)
<?php
$ldapURL = 'ldap.forumsys.com';
$ldapPort = 389; // Port par défaut = 389
$ldapVersionProtocole = 3; // Version par défaut = 2

$ldap = ldap_connect($ldapURL, $ldapPort);
if (false === $ldap) die('Echec de la connexion');

// Sélection du protocol (Non requis dans le cas d'un protocol v2)
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, $ldapVersionProtocole);
?>

6.16.3.2.2.L'authentification

Avant de vous laisser accéder aux données, le serveur LDAP exigera probablement une authentification (un identifiant et un mot de passe). Pour vous authentifier, vous pouvez faire appel à la fonction ldap_bind(). Cette fonction attend communément 3 paramètres:
  • La ressource LDAP (retournée par ldap_connect())
  • L'identifiant LDAP de l'utilisateur (i.e. son DN)
  • Le mot de passe
<?php
$ldapURL = 'ldap.forumsys.com';
$ldapPort = 389; // Port par défaut = 389
$ldapVersionProtocole = 3; // Version par défaut = 2
$ldapIdentifiant = 'cn=read-only-admin,dc=example,dc=com';
$ldapMotDePasse = 'password';

$ldap = ldap_connect($ldapURL, $ldapPort);
if (false === $ldap) die('Echec de la connexion');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, $ldapVersionProtocole);

$retour = ldap_bind($ldap, $ldapIdentifiant, $ldapMotDePasse);
if (false === $retour) die('Echec de l\'authentification (ou de la connexion)');
?>
Ici vous pouvez apprendre :
1.Introduction
2.Installation de PHP
3.Exécuter un script PHP
4.Configuration et environnement d'exécution de PHP
5.L'environnement de développement
6.Le langage PHP
6.1.Introduction
6.2.Mon premier script
6.3.La syntaxe
6.4.Les boucles (for, while, foreach, do) en PHP
6.5.Les tableaux (array) en PHP
6.6.Les fonctions
6.7.Include
6.8.Programmation orientée objet
6.9.Les fonctions de manipulation de tableaux
6.10.Les dates
6.11.Fichiers et répertoires
6.12.Les paramètres d'entrée d'un script PHP
6.13.Utilisation de la librairie graphique
6.14.JpGraph pour tracer courbes et diagrammes
6.15.Utilisation de bases de données avec PHP
6.16.LDAP
6.16.1.Introduction
6.16.2.Installation de l'extension ldap
6.16.3.Accès via les fonctions de l'extension ldap
6.16.3.1.Introduction
6.16.3.2.Connexion, authentification, paramétrage
6.16.3.3.L'accès en lecture (recherche d'objets)
6.16.3.4.L'accès en écriture
6.16.3.5.Conclusion
6.17.Parser un document XML
6.18.Génération de documents PDF en PHP
6.19.Envoyer un mail
6.20.Créer un webmail avec IMAP
6.21.Droits utilisateurs: chmod 777
6.22.Localization (l10n) et Traduction
7.PHP pour le web
8.Internationalisation (i18n) et encodage en PHP
9.Créer un fichier de logs/traces
10.Déboguer une application PHP
11.Programmer en PHP en toute sécurité
12.Bibilothèque PEAR
13.Zend Framework 2 et 3
14.Installation de Zend Framework 2
15.Joomla
16.Composer
17.PHPUnit
18.PHPDocumentor
19.Mesure de temps d'exécution (benchmark) d'une fonction PHP
20.Exemples de scripts PHP
21.Erreurs fréquentes et les solutions
22.Archives
Version imprimable: imprimer