Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
je vous ecrit car cela fait un moment que j'ai un probléme de connexion a mon site intranet
je vous explique:
j'ai créé une page connexion_ldap.php ce code me permet de me connecter via un utilisateur créé dans LDAP
mais probléme ca ne marche pas et voila les erreurs qui me retourne
Connexion au serveur
Le résultat de connexion est Resource id #3
Utilisation de LDAPv3 Connexion authentifiée ...
Utilisateur authentifié avec succès !Recherche suivant le filtre (email=*@vernon27.fr)
Le résultat de la recherche est Resource id #4
LDAP-Errno: 0
LDAP-Error: Success
Le nombre d'entrées retournées est 0
Lecture de ces entrées ....
Données pour 0 entrées:
Warning: ldap_get_attributes() expects parameter 2 to be resource, boolean given in C:\Program Files\EasyPHP-12.1\www\Intranet-2\connexion_ldap.php on line 87
attributs dans cette entrée :
Notice: Undefined variable: groupes in C:\Program Files\EasyPHP-12.1\www\Intranet-2\connexion_ldap.php on line 120
Fermeture de la connexionOK Auth USER
Notice: Undefined variable: groupes in C:\Program Files\EasyPHP-12.1\www\Intranet-2\connexion_ldap.php on line 147
Notice: Undefined index: nom in C:\Program Files\EasyPHP-12.1\www\Intranet-2\connexion_ldap.php on line 148
Notice: Undefined index: prenom in C:\Program Files\EasyPHP-12.1\www\Intranet-2\connexion_ldap.php on line 149
Notice: Undefined variable: groupes in C:\Program Files\EasyPHP-12.1\www\Intranet-2\connexion_ldap.php on line 152
Vous n'avez pas de droit d'utilisation.
Retour
et voila mon code
// 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
$identifiant = $_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>';
}
}
?>
pouvez_vous m'aider cordialement
Hors ligne
Bonjour,
Vous avez visiblement deux problèmes. L'un visible à travers vos messages d'erreur et l'autre plus profond. Je m'explique.
Pour résoudre d'abord les erreurs générées, il vous suffira d'initialiser vos variables en prenant soin de respecter leur typage. Par exemple pour $groupes un simple $groupes=''; avant la boucle de process suffira.
Ensuite pour votre autre problème, vous avez un gros problème dans votre algorithme de traitement
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];
....
En effet à chaque itération de votre boucle vous remplacez le contenu de vos variables session avec l'enregistrement courant, or vous ne vous servez de ces informations qu'après cette boucle dans vos requêtes.. il y a vraiment un souci...
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci pour ta réponse JC
j'ai pas très bien saisie le problème qui a dans mon algorithme de traitement
pouvez_vous me donner un exemple s'il vous plait
cordialement
Dernière modification par django_78 (17-01-2014 14:42:54)
Hors ligne
Bonjour,
Je vais faire simple et j'aimerais juste rappeler qu'à la base LDAP est une base de données à part entière et qu'il n'est pas nécessaire d'en tenir une copie partielle en doublon sur MySQL ou n'importe quel SGBDR. LDAP gère aussi les mots de passe utilisateur et la gestion d'un serveur LDAP est transactionné, ce qui reste essentiel il faut le dire. Donc rechercher un utilisateur et les groupes auquel il appartient pour mettre à jour l'information au niveau MySQL avec un mot de passe propre à l'application gérée par MySQL n'est pas pertinent. Pourquoi? car un utilisateur récemment banni de la forêt LDAP de l'entreprise, continuera à avoir accès à votre application ce qui ne devrait pas pouvoir arriver.
Ainsi je vous recommande fortement, d'authentifier directement l'utilisateur soit via LDAP avec son mot de passe associé dans LDAP, soit vous l'authentifiez au niveau de votre application, mais pas un mix des deux, qui reste bancal et non sécuritaire.
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Pages :: 1