Bonjour à tous,
ma question vous paraitra peut être simple, mais pour moi là ca bloque ^^
je souhaiterai tout simplement authentifier un utilisateur sur deux site diffèrent mais hébergés sur un même serveur.
en fait l'explication est assez simple même si elle parait longue ^^
j'ai un groupware (Agora-project) dans lequel je souhaiterai rajouter un lien vers un wiki (pour mon cas dokuwiki) car se groupware n'en propose pas.
l'utilisateur se connecte au groupware mais lorsqu'il clique pour aller sur le wiki, il doit a nouveau se connecter sur le wiki, or je souhaiterai avoir une sorte de login automatique sur le wiki en utilisant le même login et mot de passe que celui du groupware.
Première étape le login sur le groupware, j'ai un formulaire de ce type
donc lorsque mon utilisateur va confirmer son authentification, il y a bien une variable $login = le login entré
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <form action="index.php" method="post" OnSubmit="return controle_connexion('Merci de spécifier un identifiant et un mot de passe','Identifiant','Mot de passe');" class="div_accueil" style="margin-top:50px;position:relative;"> <div style="position:absolute;margin-top:-20px;margin-left:-20px;"><img src="./templates/divers/connexion.png" /></div> <table style="width:100%;" style="margin:auto;" cellpadding="20px;"> <tr> <td style="text-align:center"> <input type="text" name="login" style="width:150px" /><script language="JavaScript"> element("login").focus(); </script> <input type="password" name="password" value="Mot de passe" style="width:130px" onfocus="if(this.value=='Mot de passe') this.value='';" /> <input type="hidden" name="resolution_width" value="" /> <input type="hidden" name="navigateur" value="" /> <script type="text/javascript"> set_value('resolution_width',document.documentElement.clientWidth); set_value('navigateur',navigator.appName); </script> <input type="submit" value="Connexion" style="font-size:12px;width:80px;" /> </td> </tr> <tr> <td style="text-align:right;font-size:11px;padding:2px;"> <span onMouseOver="bulle('<div style=\'text-align:center;width:250px;\'>Retenir mon identifiant et mot de passe pour une connexion automatique</div>');" onMouseOut="bullefin();" > <span class="lien" id="txt_connexion" onClick="check_txt_box(this.id,'connexion');">Memoriser</span> <input type="checkbox" name="connexion_auto" value="1" id="box_connexion" onClick="check_txt_box(this.id,'connexion');" /> </span> <span onClick="popup('./divers/password_oublie.php');" class="lien" onMouseOver="bulle('<div style=\'text-align:center;width:300px;\'>Uniquement si une adresse de courriel a été spécifiée sur votre compte</div>');" onMouseOut="bullefin();" > Identifiant / Mot de passe oublié ? <img src="./templates/divers/password_oublie.png" /> </span> </td> </tr> </table> </form>
et une variable $password = le password entrer
maintenant mon user est connecté sur mon groupware et que je stock ces variable dans des variable de session.
maintenant j'ai ajouter un lien qui pointe vers la page de connexion de mon wiki
cette page de connexion contient ce type de formulaire :
donc pour mon raisonnement il faudrait que le champ "u" contiens le login enregistrer dans la session, et que le champ "p" contiens le password enregistré également dans la session
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <form action="/dokuwiki-2009-02-14/doku.php" method="post" accept-charset="utf-8" id="dw__login"><div class="no"> <input type="hidden" name="sectok" value="d206519a347a470fcf2349687a784812" /><input type="hidden" name="id" value="start" /><input type="hidden" name="do" value="login" /><fieldset ><legend>Connexion</legend> <label class="block" for="focus__this"><span>Utilisateur</span> <input type="text" id="focus__this" name="u" class="edit" /></label><br /> <label class="block"><span>Mot de passe</span> <input type="password" name="p" class="edit" /></label><br /> <label class="simple" for="remember__me"><input type="checkbox" id="remember__me" name="r" value="1" /> <span>Mémoriser</span></label> <input type="submit" value="Connexion" class="button" /> </fieldset> </div></form>
le problème a ce niveau c'est que je peut modifier ça, mais l'utilisateur devra toujours cliquer sur le bouton "connexion" pour se connecter (même si le user et login sont renseigner)
il suffirait de remplacer par exemple pour le champ utilisateur cette ligne
par ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part <label class="block" for="focus__this"><span>Utilisateur</span> <input type="text" id="focus__this" name="u" class="edit" /></label><br />
comme cela ma variable u contient deja le contenu correspondant a ma variable session, enfin pas sur de ma syntaxe mais cela devrait a peu près correspondre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<label class="block" for="focus__this"><span>Utilisateur</span> <input type="text" id="focus__this" name="u" value="<?php $_SESSION["le login enregistrer"]?>" class="edit" /></label><br />
alors les questions sont :
1) la méthode que j'utilise est-elle bonne (ce que j'avance n'est que de la théorie ^^) ?
2) comment faire pour que mon user n'ai pas besoin de cliquer sur connexion pour valider la seconde connexion pour que tout reste transparent
en gros Connexion sur le groupware > clique sur le lien pour le wiki > arrive sur la page de connexion du wiki et validation automatique du login mot de passe > redirection vers l'index du wiki
comme cela en cliquant sur mon lien, la partie login sur le wiki reste invisible pour l'utilisateur.
fiouu j'espère ne pas vous avoir perdue en route, pas si simple que ça a expliquer en fait ^^
si vous n'avez pas bien cerné mon problème , n'hésiter pas a demander, j'essayerai de mieux expliquer tout celaje suis pas très calé en php ^^
merci d'avance pour toute aide apportée![]()
Partager