Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

[Astuce] - Récupération données annuaire 4760 en php

Le but de cette astuce est de récupérer, de stocker ou d'afficher les données d'annuaire Entreprise contenus dans le serveur 4760 en se passant complètement de l'annuaire HTM d'Alcatel.

Voici ci-dessous le code en PHP permettant d'afficher toutes les entrées annuaires entreprise (filtre sur objectclass=person) :
[code:1:fbb356c5bf]
<?php
//Modifier l'adresse IP du serveur LDAP et le port
$serveur = "192.168.1.21:389";
echo "Connexion avec le serveur ".$serveur."<p>";
$ds=ldap_connect($serveur);
if ($ds)
{
echo "Liaison Anonyme...<br>";
$r=ldap_bind($ds);
if ($r)
{
$filtre="objectclass=person";
echo "Recherche des objets avec le filtre : ".$filtre."<br>";
// Recherche de tous les objets correspondant au critère de filtre
// Modifier le nom racineongletentreprise par le votre
$sr=ldap_search($ds,"o=racineongletentreprise,o=DirectoryRoot", "objectclass=person");
if ($sr)
{
echo "Le nombre d'entrées renvoyé est ".ldap_count_entries($ds,$sr)."<p>";
echo "<b>Lecture de la première entrée ...</b><br>";
$entry = ldap_first_entry ($ds, $sr);
if ($entry)
{
while($entry)
{
//Affichage des attributs de cette entrée
$attrs = ldap_get_attributes($ds, $entry);
echo $attrs["count"]." attributs dans cette entrée :<br>";
for ($i=0; $i<$attrs["count"]; $i++)
{
echo $attrs[$i]."=".$attrs[$attrs[$i]][0]."<br>";
}

$entry = ldap_next_entry($ds, $entry);
if ($entry)
{
echo "<p><b>Lecture de l'entrée suivante ...</b><br>";
}
} // while
}
}
}
else
{
echo "Impossible de s'authentifier en anonyme au serveur LDAP.";
}
echo "<p><b>Fermeture de la connexion</b>";
ldap_close($ds);
}
else
{
echo "Impossible de se connecter au serveur LDAP.";
}


?>[/code:1:fbb356c5bf]
Noter que pour varier les recherches, il faut jouer sur objectclass

Maintenant, en faisant un petit formulaire html qui interroge le script recherche.php
Voici le Formulaire html :
[code:1:fbb356c5bf]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<form action="recherche.php" method="post">

<label class="text-label" for="nom">nom</label><input class="text-field" name="nom" size="30" type="text"> <br>
<label class="text-label" for="prenom">Prenom</label><input class="text-field" name="prenom" size="15" type="text"><br>
<label class="text-label" for="direction">Direction</a></label><input class="text-field" name="direction" size="10" type="text"><br>
<label class="text-label" for="service">Service</a></label><input class="text-field" name="service" size="10" type="text"><br>
<label class="text-label" for="grade">Grade ou Fonction</a></label><input class="text-field" name="grade" size="30" type="text"><br>
<label class="text-label" for="lieu">Lieu</a></label><input class="text-field" name="lieu" size="15" type="text"><br>
<label class="text-label" for="etage">Etage</label><input class="text-field" name="etage" size="5" type="text"><br>
<label class="text-label" for="bureau">Bureau</label><input class="text-field" name="bureau" size="10" type="text"><br>
<label class="text-label" for="telephone">Téléphone ou Poste</label><input class="text-field" name="telephone" size="16" type="text"><br>
<input type="submit" action="submit" value="Envoi">
</form>

</body>
</html>
[/code:1:fbb356c5bf]
et le recherche.php (qui ne recherche que le nom d'une personne en particulier, mais on peux faire beaucoup mieux) :
[code:1:fbb356c5bf]<?php
$name=$_POST['nom'];
$serveur = "192.168.1.21:389";
$ds=ldap_connect($serveur);
if ($ds)
{
$r=ldap_bind($ds);
if ($r)
{
$filtre="objectclass=person";
$sr=ldap_search($ds,"o=racineongletentreprise,o=DirectoryRoot", "sn=".$name);
if ($sr)
{
$entry = ldap_first_entry ($ds, $sr);
if ($entry)
{
while($entry)
{
$attrs = ldap_get_attributes($ds, $entry);
for ($i=0; $i<$attrs["count"]; $i++)
{
echo $attrs[$i]."=".$attrs[$attrs[$i]][0]."<br>";
}

$entry = ldap_next_entry($ds, $entry);
if ($entry)
{
echo "<br>";
}
} // while
}
}
}
else
{
echo "Impossible de s'authentifier en anonyme au serveur LDAP.";
}
ldap_close($ds);
}
else
{
echo "Impossible de se connecter au serveur LDAP.";
}
?>[/code:1:fbb356c5bf]


Tous ces codes ont été testés. Il faut bien sur avoir le PHP sur le serveur qui exécute ces codes et le module ldap.