France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
23 592 membres enregistrés - 1 913 479 posts - 99 188 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           [phpBB] Comment faire un autologin lié avec le site?
19 connectés(record : 272 le 28 octobre 2008 - 04 h 23)

Vous devez vous connecter pour répondre au topic.
[phpBB] Comment faire un autologin lié avec le site?

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 12 avril 2005 - 20 h 01 m 39 s
Bon voila, je suis en train de développer un site web qui a plus pour vocation d'être une application multi-utilisateurs, permettant de gérer des projets.
Dans ce site, on y accède par un login et un mot de passe que l'ont aura spécifié a l'inscription.
L'un des modules integré est un forum de type phpBB, choisi car c'est celui sur lequel je connais mieux le fonctionnement, et j'arriverais le plus facilement a integrer.

Voila pour le côté pratique.
Maintenant, du point de vue code, le forum est presque totalement integré. Il utilise ses propres tables de membres et n'interfère pas avec les autres tables de la base de donnée. Les membres qui s'inscrivent sur le site sont automatiquements inscrits au forum. Ca ca marche (et même bien!).

Ce que je voudrais faire maintenant, c'est que quand l'utilisateur se connecte au site, que ca le connecte en même temps au forum (et plus tard, le lien login/logout sera supprimé).
J'ai regardé un peu comment ca se passait dans la base de donnée et dans les includes : l'utilisateur qui se connecte est enregistré dans la base par son numéro de session, son adresse ip, son uid, et d'autres trucs.

J'ai réussi a modifier ces données lors de l'inscription du membre, seulement lorsque je me connecte au forum, il me voit dans les utilisateurs en ligne, mais il ne sais pas que c'est moi! Apres un coup d'oeil dans la base, il me voit sous une autre adresse de session.

Donc voila, j'aimerais savoir comment je peut contourner ce problème, comment je peut me démerder pour que ca marche. Une idée? Quelqu'un a déja fait quelque chose du genre?



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


DeVice
Boulet occasionel...

Messages : 3 022
Inscrit le 12/03/03
Ville : Grenoble
Non connecté
  Posté le 12 avril 2005 - 20 h 05 m 26 s
Tu dois avoir fait une erreur :???:

Sinon, sans tout le code, on va avoir du mal.

Est-ce que le systeme du forum utilise des cookies pour garder trace de la session ?



Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 12 avril 2005 - 20 h 12 m 28 s
Si je te copie/colle tout le code de phpBB, je vais me faire incendier! :D
Pour le forum, non il n'a pas l'air d'utiliser de cookies, mais vraiment de stocker l'ip, l'id de session, l'id de l'utilisateur, dans la base de donnée.

Voila la structure de cette table :

    Code     
 1. /* */
 2. -- 
 3. -- Table structure for table `phpbb_sessions`
 4. -- 
 5. 
 6. CREATE TABLE `phpbb_sessions` (
 7.   `session_id` char(32) NOT NULL default '',
 8.   `session_user_id` mediumint(8) NOT NULL default '0',
 9.   `session_start` int(11) NOT NULL default '0',
10.   `session_time` int(11) NOT NULL default '0',
11.   `session_ip` char(8) NOT NULL default '0',
12.   `session_page` int(11) NOT NULL default '0',
13.   `session_logged_in` tinyint(1) NOT NULL default '0',
14.   PRIMARY KEY  (`session_id`),
15.   KEY `session_user_id` (`session_user_id`),
16.   KEY `session_id_ip_user_id` (`session_id`,`session_ip`,`session_user_id`)
17. ) TYPE=MyISAM;
18. 
19. -- 
20. -- Dumping data for table `phpbb_sessions`
21. -- 



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


DeVice
Boulet occasionel...

Messages : 3 022
Inscrit le 12/03/03
Ville : Grenoble
Non connecté
  Posté le 12 avril 2005 - 21 h 42 m 42 s
Tu veux dire que la seule manière de retrouver l'id utilisateur et la session ca va être l'adresse IP ?



Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 12 avril 2005 - 21 h 45 m 25 s
J'en ai bien l'impression! C'est un vrai fouilli leur code!
Sinon il me faudrait un moyen d'enregistrer l'utilisateur en envoyant les infos a la destination du formulaire de la page de login, mais bien sur sans la redirection qui est derrière.
Et en essayant de ne pas toucher le code du forum.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


DeVice
Boulet occasionel...

Messages : 3 022
Inscrit le 12/03/03
Ville : Grenoble
Non connecté
  Posté le 12 avril 2005 - 21 h 51 m 41 s
Tu recopies la page du formulaire en lui faisant envoyer tes données à ton propre script, qui fait son brouzouf et fait suivre au script de login "normal" du forum, peut-être ?

Edit : sinon ca m'étonnerait beaucoup qu'un forum qui fonctionne n'utilise que l'ip pour suiovre une autehntification... T'imagines le bronx avec les pools d'IP dynamiques ? Et avec les réseaux NATés ?


Message édité 1 fois, la dernière par DeVice le 12 avril 2005 - 21 h 53.

Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 13 avril 2005 - 08 h 50 m 09 s
Ben justement, c'est pour ca que je viens demander de l'aide! :D
Le problème avec ce que tu dit, c'est que si j'envoie les données au script de login du forum, il va me rediriger vers le forum.
Hors c'est pas du tout ce que je veut.
A moins que dans le formulaire il y a l'url vers laquelle il redirige, dans ce cas ca serait faisable.
Faudra que je regarde.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


DeVice
Boulet occasionel...

Messages : 3 022
Inscrit le 12/03/03
Ville : Grenoble
Non connecté
  Posté le 13 avril 2005 - 10 h 44 m 31 s
Sinon tu recopies aussi le script de login... A part la redirection :D

Bon en tout cas la problématique m'interesse, je dois faire à peu près la même chose sur le site de l'alliance [FH] d'ogame, mais avec un forum différent qui utilise les cookies (ça va être plus facile j'imagine).

Tiens nous au courant :jap:



Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 13 avril 2005 - 13 h 44 m 56 s
Je vais essayer. Merci :jap:



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 18 avril 2005 - 09 h 30 m 22 s
Bon finalement j'ai essaye 2 methodes, mais sans resultat.

La premiere etant de remvoyer les donnees sur le script de login, mais il m'affiche invariablement la page de demande de login et ne prend pas en compte ce que je lui envoie.

La deuxieme decrite ici, je n'ai meme pas pu essayer de la tester. Il faut inclure le code dans toutes les pages. Plutot que de me taper toute la structure de l'application (impossible car on est plusieurs a travailler dessus et on ne peut pas trop modifier l'existant comme ca) j'ai essaye de l'inclure dans le header (inclus dans toute les pages ou presque) mais il ne trouve pas les fichiers inclus malgres le bon chemin (j'ai verifie).

Je cherche encore.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


DeVice
Boulet occasionel...

Messages : 3 022
Inscrit le 12/03/03
Ville : Grenoble
Non connecté
  Posté le 19 avril 2005 - 15 h 02 m 41 s
Bon ben moi avec punbb pas de problèmes, je lui fait passer les données avec une url de redirection différente et hop comme une lettre à la poste.



Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 19 avril 2005 - 15 h 11 m 40 s
T'a bien du bol! :D
Je ne vais pas changer de forum car tout le reste est deja fait, mais bon j'essaye de comprendre son fonctionnement.

Je crois qu'il va falloir que je modifie son script de login. En fait, il a l'air d'utiliser les cookies au lieu des sessions.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 21 avril 2005 - 23 h 54 m 03 s
Bon et bien grace a l'aide de Temporer j'ai réussi a le faire.

Tout d'abord, il faut faire un define('IN8PHPBB', true) ou quelque chose dans le genre (c'est au debut de chaque fichier du forum).
Puis mettre dans la variable $php_root_path (ou quelque chose comme ca) le chemin vers la racine du forum.
Et inclure : config.php et common.php (ces opérations sont faites au debut de chaque fichier du forum, comme index.php ou login.php).

Ensuite il faut faire 2 fonctions qui sont le copier coller de session_pagestart et session_begin dans le fichier /include/session.php. Ces fonctions prendront 2 paramètres en plus : l'user_id et le session_id. Et il faut modifier les 2 requetes de select dans ces fonctions (bon désolé je ne les ai pas la, je ne peut pas les mettre) en leur passant le user_id dans la condition.

Avant d'appeler ces fonctions, il faut modifier la base de donnée. Pour ca on va tout d'abord calculer l'ip du client (avec la fonction encode_ip dans le include/common.php) et son session_id (qui en fait est = a md5(uniquid($client_ip)) ).
On fait également un select dans la table des users pour avoir le user_id de notre user avec son login.

Il nous faut ensuite insérer un nouvel enregistrement dans la table session en y mettant : le session_id, le user_id, la date courante (time()), encore la date courante, le user_ip, la page courante (pour le who's online, 0 pour la page index. Il y a des defines dans include/constant.php).

Une fois qu'on a ca, il reste a créer le cookie sur le navigateur du user qui va faire le lien entre cet enregistrement dans la base et lui même. Pour cela, et bien on va laisser faire phpbb. On va appeler notre fonction session_pagestart modifiée, auquelle on aura rajouté 2 paramètre (ca en fait donc 4 : $user_ip, un define pour dire ou on est (0 pour la page index), le $session_id, et le $user_id).
Dans notre session_pagestart2, on aura également rajouté ces 2 variables.

Il y a quelques ajustements a faire, demain si je peut je vous copierais ici le code entier, ca sera plus simple que mes explications foireuses. Voila!



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Page genérée en 3.0414 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory