Bon ben voici ce que j'ai modifier a la demande de pat et vdevil :)
J'utilise donc la page de connection de phenix qui a pas été trop dur a modifier du coté du design..
dans la page index.php se trouve donc le formulaire qui s'occupe de l'identification je modifie le code pour qu'il envoye vers ma page accueil.php comme ci dessous
<FORM action="accueil.php" method="post" name="formLogUtil" id="formLogUtil" target="_top" onSubmit="javascript: return saisieOK(this);">
au préalable j'avais modifier le code comme Pat m'avait expliqué pour qu'il se connecte automatiquement a piwigo quand je clique sur le bouton se connecter..
Script javascript de p@t a rajouter dans le head du fichier index.php
<script type="text/javascript"> function pwglog() { var xhr; try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e2) { try { xhr = new XMLHttpRequest(); } catch (e3) { return; } } } data = document.getElementsByName('formLogUtil')[0].elements; xhr.open( "POST", "../Galerie/ws.php", false); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("method=pwg.session.login&username=" + data.ztLogin.value + "&password=" + data.ztPasswd.value); }
De plus il faut encore rajouter la fonction javascript en valeur quand on clique sur le bouton se connecter comme ceci
<TD height="50" colspan="3" align="center" valign="middle"><INPUT type="submit" class="Bouton" value="<?php echo trad("INDEX_CONNECTER"); ?>" name="btSubmit" onClick="pwglog();"><?php if ($PUBLIC) { ?> <INPUT type="button" class="Bouton" value="<?php echo trad("INDEX_NOUVEAU"); ?>" name="btCreer" onClick="javascript: compteUtil();"><?php } ?></TD>
Ensuite il faut s'attaquer au principe que l'ont veut récupéré les variables qu'on a envoyé par la methode post et les rajouter dans l'url pour de phenix pour se connecter automatiquement..
<?php $ztLogin = $_POST['ztLogin']; $ztPasswdMD5 = $_POST['ztPasswdMD5']; ?> <li><a target="_blank" title="Ouverture de la page dans une nouvelle fenêtre" href="<?php print PATH."phenix.php?&ztLogin=$ztLogin&ztPasswdMD5=$ztPasswdMD5";?>">Les Plannings</a></li>
Et pour finir il ne reste plus qu'a bloquer le script lorsqu'on met un mauvais nom d'utilisateur ou mot de passe.. La faut réutiliser une partie du code d'identification de la page phenix.php et j'ai eu quelque complication et je m'en suis sorti avec l'appel d'un script php pour retourner a ma page index.php si les noms d'utilisateur et mdp était incorrecte..
<?php require("inc/html.inc.php"); include("inc/param.inc.php"); include("inc/fonctions.inc.php"); if (!isset($sid)) { // Identification depuis le cookie if ($COOKIE_AUTH && empty($ztLogin)) { if (!empty($_COOKIE) && isset($_COOKIE[$COOKIE_NOM])) $tabLog = explode(":",$_COOKIE[$COOKIE_NOM]); elseif (!empty($HTTP_COOKIE_VARS) && isset($HTTP_COOKIE_VARS[$COOKIE_NOM])) $tabLog = explode(":",$HTTP_COOKIE_VARS[$COOKIE_NOM]); $ztLogin = (get_magic_quotes_gpc()) ? stripslashes($tabLog[0]) : $tabLog[0]; $ztPasswdMD5 = (get_magic_quotes_gpc()) ? stripslashes($tabLog[1]) : $tabLog[1]; $hdScreen = (get_magic_quotes_gpc()) ? stripslashes($tabLog[3]) : $tabLog[3]; $autoLogin = $tabLog[2]; } // Recherche de l'utilisateur correspondant $DB_CX->DbQuery("SELECT util_id, util_semaine_type FROM ${PREFIX_TABLE}utilisateur WHERE util_login = '".$ztLogin."' AND util_passwd = '".$ztPasswdMD5."'"); if ($DB_CX->DbNumRows()) { // L'utilisateur existe $idUser = $DB_CX->DbResult(0,0); // On genere un nouveau sid mt_srand((double)microtime()*1000000); $sid = SessionId(8, $idUser, $DB_CX->DbResult(0,1), $hdScreen, false); $autoLogin += 0; if ($COOKIE_AUTH) // MAJ du cookie d'identification setcookie($COOKIE_NOM, $ztLogin.":".$ztPasswdMD5.":".$autoLogin.":".$hdScreen, time()+86400*$COOKIE_DUREE, "/", "", 0); if ($fromInstall=="1") // Menu Mise à jour $lienAdmin = "&tcMenu="._MENU_ADMIN; else $lienAdmin = ""; } else { // L'utilisateur n'existe pas @session_destroy(); [color=#FF0000]echo '<script language="Javascript"> <!-- document.location.replace("index.php?msg=1"); // --> </script>';[/color] // Fermeture BDD $DB_CX->DbDeconnect(); exit; } } $idUser = Session_ok($sid); include("skins/$APPLI_STYLE.php"); include("lang/$APPLI_LANGUE.php"); // Recherche du nom de l'utilisateur $DB_CX->DbQuery("SELECT DISTINCT util_id, CONCAT(".$FORMAT_NOM_UTIL.") AS nomUtil, util_url_export FROM ${PREFIX_TABLE}utilisateur LEFT JOIN ${PREFIX_TABLE}planning_partage ON ppl_util_id=util_id WHERE util_id=".$idUser." OR (util_partage_planning='1') OR (util_partage_planning='2' AND ppl_consultant_id=".$idUser.") ORDER BY nomUtil"); $urlsUtils = array(); while ($enr = $DB_CX->DbNextRow()) { if ($enr['util_id']==$idUser) { $nomUtilisateur = $enr['nomUtil']; $url_user = $enr['util_url_export']; } $nomsUtils[] = $enr['nomUtil']; $urlsUtils[] = $enr['util_url_export']; $idUtil[] = $enr['util_id']; } // Fermeture BDD $DB_CX->DbDeconnect(); ?>
voila si vous avez quelques questions je suis pas bien loin ou des idées pour améliorer mes modifs je suis la aussi :)
NiS a écrit:
oki je finis de créé ma base utilisateur et je posterais les petites modif que j'ai utiliser :) mais ca sera un peu que pour mon cas.. mais ca reste quand même toujours la même chose..
Ca pourra toujours etre utile à quelqu'un pour une autre application...
oki je finis de créé ma base utilisateur et je posterais les petites modif que j'ai utiliser :) mais ca sera un peu que pour mon cas.. mais ca reste quand même toujours la même chose..
NiS a écrit:
oki c'est résolu j'ai adapté le code et j'ai rajouter une petite astuce en javascript pour revenir a l'accueil :)
Je serais intéressé d'avoir comme un "tutoriel" pour reproduire une telle liaison.
Par avance, merci :-)
oki c'est résolu j'ai adapté le code et j'ai rajouter une petite astuce en javascript pour revenir a l'accueil :)
ben j'ai qu'un probleme enfaite :)
c'est qu'il ne test plus sur ma page de connection si le user et le mot de passe est bon..
donc il va directement sur ma page accueil avec n'importe quel pseudo et même si le mot de passe est mauvais.. j'ai essayé de réutiliser le script de vérification qui a dans phenix.php mais ca marche pas y a une erreur avec no.cache et il arrive pas a recharger le ficiher index.php.. quand c'est mauvais ..
Topic résolu?
nickel j'ai réussi :D
c'était une simple erreur de guillemet :D
je vous met la résolution :)
<a title="Ouverture de la page dans une nouvelle fenêtre" href="<?php print PATH."phenix.php?&ztLogin=$ztLogin&ztPasswdMD5=$ztPasswdMD5";?>">Les Plannings</a>
<a target="pouet" title="Ouverture de la page dans une nouvelle fenêtre" href="<?php print PATH."phenix.php?ztLogin=$ztLogin&ztPasswd=$ztPasswdMD5";?>">Les Plannings</a></li>
avec ca j'ai le mdp mais j'ai pas le login..
hélas aucune réponse..
mais p@t ce n'est pas possible de récupéré les cookies de la session (je mélange peut etre encore tout) et grace à php on attribue a l'url vers les planning les informations de connection de l'utilisateur
car je sais qu'avec ce lien je peux me connecter directement a l'agenda d'un utilisateur
http://localhost/Planning/phenix.php?&ztLogin=TONLOGIN&ztPasswdMD5=TONMOTDEPASSEENMD5
mais je n'arrive pas à récupéré dans mon url grace au cookies ou au variable php de valeur... les valeurs reste nulle
je fais rentrer mes liens dans ma page grace un include de menu.php
et j'ai essayé donc de récupéré les cookies qui sont envoyé par index.php pour les attribuer a mon url
une idée ou est mon horaire ?
Désolé, mais j'ai un peu mis le nez dans le code de phenix, et c'est vraiment pas super nickel...
Pour le moment, je n'irai pas plus loin... L'identification sur piwigo fonctionne, essaye de te tourner vers le support de phenix...
bon ben je coince comment je peux utiliser la session ouverte dans mon fichier php? ou/et qu'en suite les informations soit envoyé a mon fichier phenix.php également vu que la pour le moment ca envoye a mon fichier accueil.php et plus a phenix vu que j'ai changer ca dans le form action pour pouvoir y acceder a cette page avant d'aller sur phenix..
j'ai essayé de metttre mes ficihers dans le répertoire racine de phenix et j'ai copier coller les informations d'ouvertures de la session si je me trompe pas.. mais ca ne vas toujours pas :s
En cherchant un peu j'ai trouvé pour changer la direction vers ma page php sans aucun probleme.. et quand je clique sur mon lien galerie je suis correctement connecter mais par contre lorsque je clique sur planning je reviens a ma page de connection.. si je me trompe pas il a pas recu les informations pour aller correctement sur la page adéquate
j'ai tenter en rajoutant ce script la dans le head de ma page php ou serait le probleme moyen que je m'en sorte ?:)
<script type="text/javascript"> function pwglog() { var xhr; try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e2) { try { xhr = new XMLHttpRequest(); } catch (e3) { return; } } } data = document.getElementsByName('mylogin')[0].elements; xhr.open( "POST", "piwigo/ws.php", false); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("method=pwg.session.login&username=" + data.username.value + "&password=" + data.password.value); } </script>
Edit 1:
J'essaye maintenant en utilisant la session qui a été créé de l'ouvrir sur mon index.php pour que ensuite lorsque je me dirige vers phenix.php je sois automatiquement connecté..
<?php /**************************************************************************\ * Phenix Agenda * * http://phenix.gapi.fr * * Written by Stephane TEIL <phenix-agenda@laposte.net> * * Contributors Christian AUDEON (Omega) <christian.audeon@gmail.com> * * Maxime CORMAU (MaxWho17) <maxwho17@free.fr> * * Mathieu RUE (Frognico) <matt_rue@yahoo.fr> * * Bernard CHAIX (Berni69) <ber123456@free.fr> * * -------------------------------------------- * * This program is free software; you can redistribute it and/or modify it * * under the terms of the GNU General Public License as published by the * * Free Software Foundation; either version 2 of the License, or (at your * * option) any later version. * \**************************************************************************/ require("inc/nocache.inc.php"); require("inc/html.inc.php"); include("inc/param.inc.php"); include("inc/fonctions.inc.php"); if (!isset($sid)) { // Identification depuis le cookie if ($COOKIE_AUTH && empty($ztLogin)) { if (!empty($_COOKIE) && isset($_COOKIE[$COOKIE_NOM])) $tabLog = explode(":",$_COOKIE[$COOKIE_NOM]); elseif (!empty($HTTP_COOKIE_VARS) && isset($HTTP_COOKIE_VARS[$COOKIE_NOM])) $tabLog = explode(":",$HTTP_COOKIE_VARS[$COOKIE_NOM]); $ztLogin = (get_magic_quotes_gpc()) ? stripslashes($tabLog[0]) : $tabLog[0]; $ztPasswdMD5 = (get_magic_quotes_gpc()) ? stripslashes($tabLog[1]) : $tabLog[1]; $hdScreen = (get_magic_quotes_gpc()) ? stripslashes($tabLog[3]) : $tabLog[3]; $autoLogin = $tabLog[2]; } // Recherche de l'utilisateur correspondant $DB_CX->DbQuery("SELECT util_id, util_semaine_type FROM ${PREFIX_TABLE}utilisateur WHERE util_login = '".$ztLogin."' AND util_passwd = '".$ztPasswdMD5."'"); if ($DB_CX->DbNumRows()) { // L'utilisateur existe $idUser = $DB_CX->DbResult(0,0); // On genere un nouveau sid mt_srand((double)microtime()*1000000); $sid = SessionId(8, $idUser, $DB_CX->DbResult(0,1), $hdScreen, false); $autoLogin += 0; if ($COOKIE_AUTH) // MAJ du cookie d'identification setcookie($COOKIE_NOM, $ztLogin.":".$ztPasswdMD5.":".$autoLogin.":".$hdScreen, time()+86400*$COOKIE_DUREE, "/", "", 0); if ($fromInstall=="1") // Menu Mise à jour $lienAdmin = "&tcMenu="._MENU_ADMIN; else $lienAdmin = ""; } else { // L'utilisateur n'existe pas @session_destroy(); // Fermeture BDD $DB_CX->DbDeconnect(); Header("location: index.php?msg=1"); exit; } } $idUser = Session_ok($sid); include("skins/$APPLI_STYLE.php"); include("lang/$APPLI_LANGUE.php"); // Recherche du nom de l'utilisateur $DB_CX->DbQuery("SELECT DISTINCT util_id, CONCAT(".$FORMAT_NOM_UTIL.") AS nomUtil, util_url_export FROM ${PREFIX_TABLE}utilisateur LEFT JOIN ${PREFIX_TABLE}planning_partage ON ppl_util_id=util_id WHERE util_id=".$idUser." OR (util_partage_planning='1') OR (util_partage_planning='2' AND ppl_consultant_id=".$idUser.") ORDER BY nomUtil"); $urlsUtils = array(); while ($enr = $DB_CX->DbNextRow()) { if ($enr['util_id']==$idUser) { $nomUtilisateur = $enr['nomUtil']; $url_user = $enr['util_url_export']; } $nomsUtils[] = $enr['nomUtil']; $urlsUtils[] = $enr['util_url_export']; $idUtil[] = $enr['util_id']; } // Fermeture BDD $DB_CX->DbDeconnect(); ?>
euh pat je viens d'y réfléchir pour utiliser la page de connection de phenix serait il possible.. d'arriver sur la page de connection phenix et d'au lieu de se connecter a la page de phenix qu'elle se connecte a une page index.php que j'ai créé et que la session soit ouverte a partir de ce moment la si je clique sur planning ou galerie dans mon menu je suis automatiquement connecté ?
merci d'avance :)
suis sur que la solution est pas loin :p
c'est fait j'ai demandé sur le forum la confirmation et ou ca se trouvait et je suis entrain de chercher par moi même dans le code si je trouve quelque chose de similaire a la page ws.php
et si j'ai bien suivi ce que tu utilises comme script si y a bien un web service je pourrais faire ceci
<script type="text/javascript"> function phenixlog() { var xhr; try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e2) { try { xhr = new XMLHttpRequest(); } catch (e3) { return; } } } data = document.getElementsByName('mylogin')[0].elements; xhr.open( "POST", "[color=#BF0000]Galerie/pagewebservice.php[/color]", false); // [i]path vers la page php ou se trouve le web service[/i] xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("method=[b][color=#FF0000]PHENIX[/color][/b].session.login&username=" + data.username.value + "&password=" + data.password.value); } </script>
... ou mylogin est le nom du formulaire et ensuite faire une modif dans le formulaire faire appel a la fonction comme ceci
<input type="submit" value="submit" onClick="phenixlog();">