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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
| <?php
// Connexion a mysqli
$link = mysqli_connect("localhost", "root", "", "intra")or die("Impossible de se connecter : " . mysqli_error());
//$baseDN = 'cn=users, dc=vernon27, dc=local';
$baseDN = 'OU=Services, DC=vernon27, DC=local';
$ldapServer = '172.20.1.3';
$rdn = 'intra_ldap';
$mdp = '123456';
$user = "cn=".$_POST['login'];
$password = $_POST['password'];
$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";
// Connexion au serveur
echo "Connexion au serveur <br />";
$conn=ldap_connect($ldapServer);
// on teste : le serveur LDAP est-il trouvé ?
if ($conn)
{
echo "Le résultat de connexion est ".$conn ."<br />";
}
else
{
die("connexion impossible au serveur LDAP");
}
// 2ème étape : on effectue une liaison au serveur, ici de type "anonyme" pour une recherche permise par un accès en lecture seule
// On dit qu'on utilise LDAP V3, sinon la V2 par défaut est utilisé et le bind ne passe pas.
if (ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3))
{
echo "Utilisation de LDAPv3 \n";
}
else
{
echo "Impossible d'utiliser LDAP V3\n";
exit;
}
print ("Connexion authentifiée ...<br />");
$bindServerLDAP=ldap_bind($conn,$rdn,$mdp);
// nom d'utilisateur
if (isset($_POST['login'])) {
$username = $_POST['login'];
}
// mot de passe utilisateur
$auth_pass = $_POST['password'];
// nom de domaine
$domaine = "VERNON27.local";
// nom d'utilisateur + @ + nom de domaine
$auth_user = $identifiant."@".$domaine;
// resultat de connexion
if (!($bind=@ldap_bind($conn, $auth_user, $auth_pass)))
{
// l'utilisateur ou le mdp est refusé
echo "Nom d'utilisateur ou mot de passe refusé ! ";
echo "<a href='index.php'>Retour";
}
else
{
// l'utilisateur ou le mdp est accepté
echo "Utilisateur authentifié avec succès !";
echo "Recherche suivant le filtre (email=*@vernon27.fr) <br />";
$query = "mail=".$_POST['login']."@vernon27.fr";
$result = ldap_search($conn, $baseDN, $query);
echo "Le résultat de la recherche est $result <br />";
echo "LDAP-Errno: " . ldap_errno($conn) . "<br />\n";
echo "LDAP-Error: " . ldap_error($conn) . "<br />\n";
echo "Le nombre d'entrées retournées est ".ldap_count_entries($conn,$result)."<p />";
echo "Lecture de ces entrées ....<p />";
$info = ldap_get_entries($conn, $result);
echo "Données pour ".$info["count"]." entrées:<p />";
// Atrributs de l'entrée
$entry = ldap_first_entry($conn, $result);
$attrs = ldap_get_attributes($conn, $entry);
echo $attrs["count"] . " attributs dans cette entrée :<p>";
//Démarrage de la session
session_start();
// Informations de l'entrée
for ($i=0; $i < $info["count"]; $i++)
{
//Mise en session des données
$_SESSION['prenom'] = $info[$i]["givenname"][0];
$_SESSION['nom'] = $info[$i]["sn"][0];
$_SESSION['courriel'] = $info[$i]["mail"][0];
$d = 0;
while ($info[$i]["memberof"][$d])
{
echo $info[$i]["memberof"][$d];
echo '<br>';
$pieces = explode(',', $info[$i]["memberof"][$d]);
echo $pieces[0];
$groupes = $groupes.''.$pieces[0].'.';
echo '<br>';
$d++;
}
}
/*
while ($array[$d])
{
$groupes = $array[$d]'.';
$d++;
}*/
echo $groupes;
echo "Fermeture de la connexion";
ldap_close($conn);
// Vérification de l'existence de l'utilisateur
$reqVerif = mysqli_query($link,
' SELECT Id_utilisateurs, Num_sections
FROM utilisateurs
WHERE Pseudo="'.$_POST['login'].'"
')or die("Pb avec la requete: $reqVerif");
$existUser = mysqli_fetch_array($reqVerif);
if($existUser['Id_utilisateurs'] == '')
{
//Création de l'utilisateur pour la première fois
mysqli_query($link, "INSERT INTO utilisateurs (Id_utilisateurs, Nom, Prenom, Pseudo, Mot_de_passe, Courriel, Telephone, Groupes, Num_groupes, Num_sections)
VALUES('', '".$_SESSION['nom']."', '".$_SESSION['prenom']."', '".$_POST['login']."', '', '".$_SESSION['courriel']."', '5557545759', '".$groupes."', '1', '1')");
echo "Insertion en base de données. Veuillez vous reconnecter pour accèder à l'intranet.";
}
else
{
//Connexion de l'utilisateur déjà présent dans la base avec UPDATE du statut si modification
echo "OK Auth USER</br>";
mysqli_query($link,
" UPDATE utilisateurs
SET Groupes = '".$groupes."'
WHERE Nom = '".$_SESSION['nom']."'
AND Prenom = '".$_SESSION['prenom']."'
");
if(strstr($groupes, 'Intra_Intranet'))
{
$_SESSION['id_utilisateurs'] = $existUser['Id_utilisateurs'];
$_SESSION['num_sections'] = $existUser['Num_sections'];
//echo "<a href='accueil.php'>Poursuivre</a>";
header('Location: accueil.php');
}
else
echo "Vous n'avez pas de droit d'utilisation.";
echo '<br>';
echo '<a href="index.php">Retour</a>';
}
}
?> |
Partager