Annonce

  •  » Utilisation
  •  » lier les utilisateurs de piwigo avec une base de donnée externe..

#46 2010-02-19 16:01:16

NiS
Membre
2010-02-09
85

Re: lier les utilisateurs de piwigo avec une base de donnée externe..

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

Code:

  <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) { ?>&nbsp;&nbsp;&nbsp;<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..

Code:

<?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..

Code:

<?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 :)

Dernière modification par NiS (2010-02-19 16:08:16)

Hors ligne

  •  » Utilisation
  •  » lier les utilisateurs de piwigo avec une base de donnée externe..

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact