CLASS LDAP ET CONNEXION À DEUX SERVEUR DONT UN DE SECOUR...

vincseize Messages postés 113 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 28 mars 2010 - 3 juil. 2006 à 20:42
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007 - 16 mars 2007 à 15:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28063-class-ldap-et-connexion-a-deux-serveur-dont-un-de-secour

cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
16 mars 2007 à 15:01
rebonjour EHMARC c'est la petite ennyeuse qui revient car j'ai tjrs ce probléme de connexion car apres ma fenêtre d'authentification je n'ai rien et apres avoir remplis le login et le pass je dois cliquez sur le bouton OK 3 fois et apres cela ma page apres authentification ne se lanse pas c'est une page blanche qui se lance ceci prouve que je ne me logggue pas sur l'annuaire et je ne vois pas où est le probléme car avec phpldapadmin j'arrive à me connecté mais seulement je dois mettre comme login la baseDN de l'utilisateur qui ve se logger je ne sais pas si tu tiens compte de cela ou c'est ça le probléme en tout cas voilà ce que j'ai fais du code STP REGARDE UN PEU ET DIS MOI QUOI et encore merci pour tout

<?php
//code1
$annu1 = "didie"; //Annuaire Principal il faut remplir avec le nom de ton serveur ou l'adresse ip si c'est pas défini
include "./toto.php";
header('WWW-Authenticate: Basic realm="LDAP"'); //fenetre de login ca sort tout seul une jolie fenetre

/*j'ai oublié ca sans quoi ca ne te ramene pas les variables*/
if(phpversion() < 4.2){
foreach($HTTP_SERVER_VARS as $NomVar => $Value) $$NomVar = $Value;
}else{
foreach($_SERVER as $NomVar => $Value) $$NomVar = $Value;
}

session_start();
//$identification = "0";


if($PHP_AUTH_USER != '' && $PHP_AUTH_PW != ''){
//---------------------------------------LDAP-------------------------------------------
$serveur1 = new LDAP($PHP_AUTH_USER,$PHP_AUTH_PW,$annu1);
if($serveur1->connect()){ //connexion au serveur LDAP
if($serveur1->identification()){ //identification au serveur LDAP
//------------------si identification ok
header("location: ./inde.php"); //page suivante de ta page d'authentification
/*le code doit etre situé en debut de page si tu utilise le header sinon ca va planter
si tu ne veut pas utiliser le header il y a moyen en fait tu met ici tout le code a executer si l'authentification est bonne*/
}else{
//l'utilisateur n'a pas ete reconnu dans l'annuaire LDAP
}
$serveur1->deconnect(); //on se deconnect du serveur c'est plus propre quand meme
}else{
//connexion impossible
}
}else{
//il faut remplir les champ
}
?>


<?php
//code2+ajout du formulaire
$annu1 = "didie"; //Annuaire Principal il faut remplir avec le nom de ton serveur ou l'adresse ip si c'est pas défini
include "./toto.php";

//header('WWW-Authenticate: Basic realm="LDAP"'); //fenetre de login ca sort tout seul une jolie fenetre
/*j'ai oublié ca sans quoi ca ne te ramene pas les variables*/
if(phpversion() < 4.2){
foreach($HTTP_SERVER_VARS as $NomVar => $Value) $$NomVar = $Value;
}else{
foreach($_SERVER as $NomVar => $Value) $$NomVar = $Value;
}
if($PHP_AUTH_USER != '' && $PHP_AUTH_PW != ''){
//---------------------------------------LDAP-------------------------------------------
$serveur1 = new LDAP($PHP_AUTH_USER,$PHP_AUTH_PW,$annu1);
if($serveur1->connect()){ //connexion au serveur LDAP
if($serveur1->identification()){ //identification au serveur LDAP
//------------------si identification ok
header("location: ./inde.php"); //page suivante de ta page d'authentification
/*le code doit etre situé en debut de page si tu utilise le header sinon ca va planter
si tu ne veut pas utiliser le header il y a moyen en fait tu met ici tout le code a executer si l'authentification est bonne*/
}else{
//l'utilisateur n'a pas ete reconnu dans l'annuaire LDAP
}
$serveur1->deconnect(); //on se deconnect du serveur c'est plus propre quand meme
}else{
//connexion impossible
}
}else{
//il faut remplir les champ
}
?>
<html>
<head>
<title>Authentification</title>
</head>




<script language="Javascript">

function verifierSaisie() {
if(document.authentification.$PHP_AUTH_USER.value=="") {
alert("Login non saisi.");
}
else {
if(document.authentification.$PHP_AUTH_PW.value=="") {
alert("Pass non saisi");
}
else {
document.authentification.cours.value="en cours...";
document.authentification.submit();
}
}
}


</script>




<form name="authentification" action="<? $PHP_SELF ?>" method="post">
Authentification,

----

Login :,
,

----

Pass :,
,

----



</form>




</html>
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
15 mars 2007 à 16:38
J'avais oublié un chapitre dans le code lol
<?php
$annu1 = "TonServeur"; //Annuaire Principal il faut remplir avec le nom de ton serveur ou l'adresse ip si c'est pas défini
include "./toto.php";
header('WWW-Authenticate: Basic realm="LDAP"'); //fenetre de login ca sort tout seul une jolie fenetre
/*j'ai oublié ca sans quoi ca ne te ramene pas les variables*/
if(phpversion() < 4.2){
foreach($HTTP_SERVER_VARS as $NomVar => $Value) $$NomVar = $Value;
}else{
foreach($_SERVER as $NomVar => $Value) $$NomVar = $Value;
}
if($PHP_AUTH_USER != '' && $PHP_AUTH_PW != ''){
//---------------------------------------LDAP-------------------------------------------
$serveur1 = new LDAP($PHP_AUTH_USER,$PHP_AUTH_PW,$annu1);
if($serveur1->connect()){ //connexion au serveur LDAP
if($serveur1->identification()){ //identification au serveur LDAP
//------------------si identification ok
header("location: ./index.php"); //page suivante de ta page d'authentification
/*le code doit etre situé en debut de page si tu utilise le header sinon ca va planter
si tu ne veut pas utiliser le header il y a moyen en fait tu met ici tout le code a executer si l'authentification est bonne*/
}else{
//l'utilisateur n'a pas ete reconnu dans l'annuaire LDAP
}
$serveur1->deconnect(); //on se deconnect du serveur c'est plus propre quand meme
}else{
//connexion impossible
}
}else{
//il faut remplir les champ
}
?>

Tu peut remplacer cette ligne de header par ton formulaire ya pas de soucis (faut juste apres que tu remplace $PHP_AUTH_USER,$PHP_AUTH_PW par tes variables sinon ca va pas marcher)

de plus si tu met du HTML à la place du header d'authentification il faut que tu change le second header("location ./index.php") par un code php genre un
echo("ouais j'ai gagné");


Sinon pour ton dexieme message c'est une histoire de securité pour eviter qu'on te pirate il y a plein de methode genre les session ...
Moi je passai un code a ma deuxieme page (avec un hash MD5) j'enregistrai ce hash et l'IP le nom de user la date et l'heure dans une table (ainsi que la derniere page visitée) le tout en passant mes variables par une session
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 16:30
EHMARC le service où je suis en stage est entrain de fermer dc je continuerai demain je ne pourrai rien testé à la maison merci de regarder ses qq remarque c'est gentil
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 15:59
"je te conseille tout de meme dans ce cas de creer une session ou de passer un parametres qui permet de verifier que le mec c'est bien loguer et n'as pas appeler cette page directement" dans ton code on ne travail qu'avec l'appel des fonctions comment puis je faire cette partie car je suis entrain de testé ma page et je ne sais même pas dire si je suis connecté ou pas merci de m'aider je commençais à desespérer
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 15:35
header('WWW-Authenticate: Basic realm="LDAP"')est ce que je peux remplacer cette ligne par un formulaire que je ferai moi même ou cela causera un probléme et en plus qd il me demande l'authentification qd je met le login et le pass et qd j'appuie sur ok il laisse le champs login vide et ne fais rien la fenêtre d'authentification est tjrs là et je dois rentrer le pass plusieur fois pour enfin avoir une fenêtre blanche je demande à remplacer cette ligne par un formulaire pour pouvoir renvoyer les message d'erreur coe koi login ou pass éronné ou alors veuillé saisir votre login ou pass
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
15 mars 2007 à 15:27
header(); est une fonction a placer avant tout les codes html de la page car elle définie la nature meme de ta page html
http://fr.php.net/header
qui explique tres bien le header et donne un grand nombre des possibilités qu'il offre (bien qu'il y en ai plus)
le header est une fonction hyper puissante qui résoud beaucoup de probleme quand on sait l'utiliser (faut pas faire de fautes d'hortographe ou de casse à l'interieur des parentheses sinon ça plante )

dans ca cas si
header("location: ./index.php");
Renvoie sur une autre page qui s'appelle "index.php" grossomodo si tu change index.php par le nom de la page qui suit ton identhification ca devrait marcher header("location: ./MaPageApresIdentification.php"); (je te conseille tout de meme dans ce cas de creer une session ou de passer un parametres qui permet de verifier que le mec c'est bien loguer et n'as pas appeler cette page directement)
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 15:12
merci pour tout cette ligne fais quoi exactement :
header("location: ./index.php");? et le header c'est quoi
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
15 mars 2007 à 14:38
salut,
c'est justement le but de ce morceau de code
Le code plus haut doit etre cinder en deux partie la premiere qui est la classe LDAP (que tu va mettre dans un fichier par exemple "toto.php") que tu include dans ton code principale
ensuite je vais te refaire le bout de code pour l'authentification mais en plus simple
ne met rien d'autre dans ta page que ce code

<?php
$annu1 = "TonServeur"; //Annuaire Principal il faut remplir avec le nom de ton serveur ou l'adresse ip si c'est pas défini
include "./toto.php";
header('WWW-Authenticate: Basic realm="LDAP"'); //fenetre de login ca sort tout seul une jolie fenetre

if($PHP_AUTH_USER != '' && $PHP_AUTH_PW != ''){
//---------------------------------------LDAP-------------------------------------------
$serveur1 = new LDAP($PHP_AUTH_USER,$PHP_AUTH_PW,$annu1);
if($serveur1->connect()){ //connexion au serveur LDAP
if($serveur1->identification()){ //identification au serveur LDAP
//------------------si identification ok
header("location: ./index.php"); //page suivante de ta page d'authentification
/*le code doit etre situé en debut de page si tu utilise le header sinon ca va planter
si tu ne veut pas utiliser le header il y a moyen en fait tu met ici tout le code a executer si l'authentification est bonne*/
}else{
//l'utilisateur n'a pas ete reconnu dans l'annuaire LDAP
}
$serveur1->deconnect(); //on se deconnect du serveur c'est plus propre quand meme
}else{
//connexion impossible
}
}else{
//il faut remplir les champ
}
?>

je n'ai pas pu vérifier ce bout de code donc j'espere que ca marche, je n'ai pu d'annuaire LDAP sous la main...
Sinon faut pas croire c'est pas si compliquer que ca LDAP
Ma classe n'est pas fini il reste plein d'autre fonction a faire mais bon c'est pu à l'ordre du jour

Tien moi au courant je ferai ce que je peut pour t'aider
cs_suzye Messages postés 15 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 13:42
bonjour ehmarc tu n'as un script de connection a un annuaire ldap à l'aide d'un login et password en php c'est à dire un truc pour l'authentification stp si tu peux aide moi je suis dans la galére
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
6 juil. 2006 à 17:34
Salut,
pas de probleme si tu as des questions
par contre je vois pas pour le $base????
vincseize Messages postés 113 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 28 mars 2010
3 juil. 2006 à 20:42
excellent ... merci beaucoup ....

Mise à part le $base que j ai été de rentrer à la mano, thx for all ...
J ai vu que tu t etais t étais penché sur ls pbl de connexion ldap php qui est un vrai casse tête .. donc j aurais certainement des question à te poser de nouveau !