Annonce

  •  » Utilisation
  •  » Enregistrement automatique depuis identification sur autre site

#1 2009-06-06 12:06:37

nmicoud
Membre
1970-01-01
70

Enregistrement automatique depuis identification sur autre site

Bonjour,

J'ai un site web "familial" hébergé chez Free, qui possède une galerie pwg et qui fournit quelques actus.
J'ai restreins l'accès à certaines actus aux personnes inscrites sur mon site

Je me suis donc créer une table pour mes utilisateurs (user_id, login, mdp).

Le but du jeu serait que lorsque l'utilisateur se connecte sur mon site, j'arrive à faire passer son id sur Piwigo pour qu'il n'ait pas à s'identifier à nouveau en rentrant sur la galerie.

Ce que je souhaite faire est-il réalisable ? Et si oui, suffit-il de faire passer une variable $_SESSION ??

Merci

Nico

Hors ligne

#2 2009-06-06 17:36:04

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Enregistrement automatique depuis identification sur autre site

On peut utiliser les web service pour cela... avec un petit coup d'ajax...
Dans le cas bien sur ou ta table d'utilisateur est commune pour ton site et piwigo!

dans le header de la page de ton site, tu mettras:

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

... ou mylogin est le nom de ton formulaire, et piwigo/ws.php est le chemin relatif vers le webservice de piwigo.

Enssuite, dans ta page, tu auras un formulaire qui ressemble à ca:

<form method="post" name="mylogin" action="" >
  <input type="text" name="username" value="" >
  <input type="password" name="password" value="" >
  <input type="submit" value="submit" onClick="pwglog();">
</form>

Dernière modification par P@t (2009-06-06 17:41:52)


P@t

Hors ligne

#3 2009-06-06 17:53:19

nmicoud
Membre
1970-01-01
70

Re: Enregistrement automatique depuis identification sur autre site

merci pour la réponse
à chaud comme ça (je n'ai pas tout analysé), cela signifie-t-il que sur les 2 tables (la mienne et celle de PWG), les noms d'utilisateurs et mots de passe doivent être identiques ?

Actuellement, ce n'est pas le cas... mais je peux demander aux utilisateurs de le faire
En fait, j'avais dans l'idée de faire la chose suivante :
dans la table de mes utilisateurs, j'ajoute une colonne pwg_user_id (manuellement)

et lorsque l'utilisateur se connecte sur mon site, boum, je fais passer cet id en appelant la fonction
log_user($user_id, $remember_me)

En tout cas, je regarde cette première reponse

Nico

Hors ligne

#4 2009-06-06 18:01:03

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Enregistrement automatique depuis identification sur autre site

Piwigo te permet d'utiliser ta propre table d'utilisateurs... tu n'es pas obligé d'utiliser celle de piwigo.

Dans ton config_local.inc.php, il suffira de mettre (via LocalFiles Editor):

$conf['users_table'] = 'my_personal_users_table';

Ensuite, il faut paramétrer les champs si ceux-ci sont différents de ceux de piwigo par défaut:

$conf['user_fields'] = array(
  'id' => 'id',
  'username' => 'username',
  'password' => 'password',
  'email' => 'mail_address'
  );

(il faut donc obligatoirement ces 4 champs dans ta table)

Ensuite, si tu n'utilise pas le cryptage md5 pour le mot de passe (mais sha1 par exemple), tu peux en définir un autre:

$conf['pass_convert'] = create_function('$s', 'return sha1($s);');

Enfin, il faudra bien faire attention que l'admin principal (webmaster) a l'id 1 et l'utilisateur invité (guest) a l'ID 2. Si ce n'est pas le cas, tu peux modifier ca ainsi:

$conf['webmaster_id'] = 35;
$conf['guest_id'] = 42;

Dernière modification par P@t (2009-06-06 18:03:16)


P@t

Hors ligne

#5 2009-06-06 18:12:52

nmicoud
Membre
1970-01-01
70

Re: Enregistrement automatique depuis identification sur autre site

c'est trop fort !
je teste ça !

merci

Hors ligne

#6 2009-06-06 18:13:07

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: Enregistrement automatique depuis identification sur autre site

P@t,

2 sites =  bases différentes (en principe).
Piwigo ne pourra pas utiliser l'autre table (double connexion et connexion MySQL depuis un autre site), c'est peu probable que cela marche.

;-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#7 2009-06-06 18:16:22

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Enregistrement automatique depuis identification sur autre site

VDigital a écrit:

2 sites =  bases différentes (en principe).
Piwigo ne pourra pas utiliser l'autre table (double connexion et connexion MySQL depuis un autre site), c'est peu probable que cela marche.

nmicoud a écrit:

J'ai un site web "familial" hébergé chez Free, qui possède une galerie pwg et qui fournit quelques actus.

Si j'ai bien compris, tout est sur le meme site ;-)


P@t

Hors ligne

#8 2009-06-06 18:22:57

nmicoud
Membre
1970-01-01
70

Re: Enregistrement automatique depuis identification sur autre site

Oui tout est sur le même site

Hors ligne

#9 2009-06-06 18:32:45

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: Enregistrement automatique depuis identification sur autre site

Alors le titre du topic n'est p-e pas le meilleur... ;-)
Mais du coup la solution de P@t est bonne.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#10 2009-06-06 18:40:40

nmicoud
Membre
1970-01-01
70

Re: Enregistrement automatique depuis identification sur autre site

Alors, le partage semble bien fonctionner !!
J'ai juste un msg d'avertissement dès que qq1 s'identifie (ce qui fonctionne donc!) :

Warning:  [mysql error 1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM nl69_users
  WHERE user_id = 1' at line 2

SELECT
  FROM nl69_users
  WHERE user_id = 1
; in /mnt/121/sdb/7/f/nicololo69/pwg/include/functions.inc.php on line 918


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/121/sdb/7/f/nicololo69/pwg/include/functions.inc.php on line 1122



Les SQL pour "ma" table d'utilisateurs
CREATE TABLE IF NOT EXISTS `nl69_users` (
  `user_id` int(3) NOT NULL auto_increment,
  `login` varchar(15) NOT NULL,
  `mdp` varchar(32) NOT NULL default '',
  `email` varchar(50) default NULL,
  PRIMARY KEY  (`user_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


INSERT INTO `nl69_users` (`user_id`, `login`, `mdp`, `nom_complet`, `isactive`, `pwg_user_id`, `pseudo_actu`, `email`) VALUES
(3, 'gobbo', 'a416ba546584d0bc9decb875cdd2884e', 'Gobbo', 'N', NULL, 'Gobbo', 'toto@free.fr'),
(2, 'guest', '', '', 'N', NULL, NULL, NULL),
(1, 'Nico & Lolo', 'd78bea4fe61d009acdf2001c4334a065', 'Nico & Lolo', 'N', NULL, 'Nico & Lolo', 'nicololo69[@]free.fr');



Extrait du config_local.inc.php
// Table utilisateurs = NL69
$conf['users_table'] = 'nl69_users';
$conf['user_fields'] = array(
  'id' => 'user_id',
  'username' => 'login',
  'password' => 'mdp',
  'mail_address' => 'email'
  );
// Table utilisateurs = NL69



La fonction qui semble poser problème :

/**
* Returns webmaster mail address depending on $conf['webmaster_id']
*
* @return string
*/
function get_webmaster_mail_address()
{
  global $conf;

  $query = '
SELECT '.$conf['user_fields']['email'].'
  FROM '.USERS_TABLE.'
  WHERE '.$conf['user_fields']['id'].' = '.$conf['webmaster_id'].'
;';
  list($email) = mysql_fetch_array(pwg_query($query));

  return $email;
}


AMHA, il semble que le programme ne trouve pas d'email attaché au compte du webmaster (id=1).
Or, dans ma table, il y en a bien un...

Je rate qqchose ?

Merci

Hors ligne

#11 2009-06-06 18:53:35

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Enregistrement automatique depuis identification sur autre site

Le champ email n'est pas bon:

$conf['user_fields'] = array(
  'id' => 'user_id',
  'username' => 'login',
  'password' => 'mdp',
  'email' => 'email'
  );

C'est pourtant bien ce que j'avais noté plus haut ;-)

Dernière modification par P@t (2009-06-06 18:54:34)


P@t

Hors ligne

#12 2009-06-06 18:56:26

nmicoud
Membre
1970-01-01
70

Re: Enregistrement automatique depuis identification sur autre site

effectivement...

j'ai cru, à tort, qu'il fallait indiquer le nom de la colonne dans la table de PWG, d'où "mail_address"

Merci !!

Hors ligne

#13 2009-06-06 19:03:51

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Enregistrement automatique depuis identification sur autre site

Pour info, dans ton cas, on peut aussi utiliser une solution tout PHP...
C'est à dire, dans ta page php principale, il suffit de mettre:

define('PHPWG_ROOT_PATH','./piwigo/');
include( PHPWG_ROOT_PATH.'include/common.inc.php' );
check_status(ACCESS_FREE);

if (isset($_POST['submit']))
{
  try_log_user($_POST['username'], $_POST['password'], false);
}

... ou ./piwigo/ est le chemin relatif de ton dossier piwigo.
En faisant attention aux noms des champs et du bouton du formulaire (submit, username, password).

Par contre, attention aux sessions, noms de fonctions, etc... qui pourraient faire doublon!
Je n'ai pas testé cette solution, mais elle doit fonctionner dans le cadre d'un site assez simple... mais peu de chances que ca fonction avec un CMS genre drupal ou joomla par exemple.
L'idéal étant quand meme d'utiliser les web services...

Dernière modification par P@t (2009-06-06 19:06:42)


P@t

Hors ligne

#14 2009-10-01 01:26:44

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Hors ligne

#15 2010-05-08 18:08:42

dragonballed
Membre
2010-02-25
72

Re: Enregistrement automatique depuis identification sur autre site

Salut! Je suis vraiment débutant en php donc j'avoue que j'ai pas tout compri.

Je vous explique mes attentes et si vous le souhaitez je pourrais recréer un topic.

En fait j'ai créé mon site, ensuite j'y ai intégré piwigo pour tout le contenu multimédia du site. Seulement voila, maintenant j'ai d'autres pages qui n'ont rien à voir avec la galerie mais qui ont besoin d'être protégées. J'aimerais que cette protection se fasse par une identification avec les logins de ma galerie.

Sans oublier que j'ai utilisé le système de validation par mail. J'ai donc un groupe "attente" et un "validé". Il faudrait donc que seul le groupe "validé" puisse se connecter et avoir accès à la page.

Pour finir, j'aimerai avoir une page d'inscription autre que celle de la galerie. J'espère vraiment que mes attentes sont réalisable. Merci d'avance pour votre aide!

Hors ligne

  •  » Utilisation
  •  » Enregistrement automatique depuis identification sur autre site

Pied de page des forums

Propulsé par FluxBB

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