[INFO] sur l'utilisation des sessions de phpBB3 sur son site

Ce forum aborde toutes les questions qu'un codeur ou webmaster pourrait se poser, et n'ayant aucun rapport direct avec phpBB.
Tout ce qui peut concerner la récupération des sessions de phpBB sur votre site, doit se faire dans ce forum.

Modérateur: Equipe

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Jaguar 0009 » 21 Nov 2008 à 13:19

Vu l'assurance de ta réponse, je savais qu'il y avait quelque chose avant, mais je n'aurais jamais pensé à ça !!!
Merci. Tout fonctionne maintenant, mes variables de session persistent bien d'une page à l'autre :D !

Tu devrais préciser dans ton tuto le IMPERATIF en rouge : aucun texte affiché avant cette ligne dans le document php et non pas dans la page générée.
Jaguar 0009
Posteur néophyte
Posteur néophyte
 
Messages: 20
Inscription: 14 Avr 2005 à 11:36
Localisation: Lyon

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Doctsf » 21 Nov 2008 à 19:24

Bonsoir la compagnie
J'ai suivi votre discussion.
Moi-aussi je tente d'intégrer phpbb3 à mon site, pour utiliser le module d'identification phpbb3.
Le problème, c'est les variables de session de mon site !

Un bon point ; ça fonctionne nickel en local ! (WAMPServer 2.0, Apache 2.2.8, PHP 5.2.6, MySQL 5.0.51b)

Mais bouuh, en ligne rien à faire. ( http://doctsf.com, hébergement OVH (Linux), PHP 4.4.9, MySQL 4.0.25).
Au choix : soit j'ai une page blanche, soit le forum fonctionne mais les sessions de mon site sont perdues.

Pour tenter d'intégrer phpbb3 à mon site :
Il a fallu modifier tous les scripts pour renommer mes méthodes de connexion, qui faisaient appel à $db, variable réservée à phpBB3.
Ensuite regrouper les diverses variables de session de mon site en quatre variables-tableau, pour pouvoir les gérer plus facilement.

Bref, en me basant sur le très bon tutorial : http://forums.phpbb-fr.com/documentation-phpbb3/sujet154874.html,
voici le code qui fonctionne nickel en local :
Code: Tout sélectionner
   
   // ceci est appelé en include depuis toutes les entetes du site hors forum
   session_start();
   
   define('IN_PHPBB', true);
   $phpbb_root_path = 'C:/Documents and Settings/.../www/forum/';
   $phpEx = substr(strrchr(__FILE__, '.'), 1);
   include($phpbb_root_path . 'common.' . $phpEx);
   $user->session_begin();
   $auth->acl($user->data);
   $user->setup();
   
   // pour utilisation dans les entêtes de mon site le pseudo
   if ($user->data['username']<>'Anonymous'){
      $jmforum_user_connect = $user->data['username'];
   }else{
      $jmforum_user_connect = "Non connecté";
   }
   
   // champs utilisateur personnalisés de phpbb3
   // pour utilisation dans le reste du site...
   $user->get_profile_fields( $user->data['user_id'] );
   $jmforum_user_fields = $user->profile_fields;


Le même code que ci-dessus, en ligne (avec le bon $phpbb_root_path) ne fonctionne pas !
J'ai une page blanche !
Si je commente le session_start(), mes pages s'affichent mais je perds mes sessions hors forum.

Donc j'ai le choix :
- soit j'ai un problème de cohabitation avec le session_start() et l'appel à common.php (=> page blanche)
- soit je n'ai plus mes sessions persos.

J'ai aussi essayé de m'inspirer de cette méthode : http://forums.phpbb-fr.com/coding-webmastering-securite/sujet153334-15.html qui consiste à passer
Code: Tout sélectionner
$formInscription=unserialize($_SESSION['formInscription']);
avant d'appeler la méthode phpbb3, mais sans résultat.

Alors je me tourne vers vous. Vous avez probablement réussi à utiliser les sessions de phpbb3, et en même temps quelques variables de session à vous pour le reste de site ?

Un grand merci par avance pour l'aide que vous pourrez m'apporte, je sèche...
Cordialement,
Jean-Michel
Doctsf
Posteur néophyte
Posteur néophyte
 
Messages: 22
Inscription: 19 Sep 2008 à 07:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 21 Nov 2008 à 20:31

Doctsf
est-ce que tu as mis le bon phpbb_root_path ?
à voir ton site, ça devrait être
Code: Tout sélectionner
$phpbb_root_path = './forum/';
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Doctsf » 21 Nov 2008 à 20:57

oui, le path est bon.
Entre temps j'ai un peu avancé :
a priori ça se passe ici, dans le common.php de phpbb3 :
Code: Tout sélectionner
   foreach ($input as $varname)
   {
      if (isset($not_unset[$varname]))
      {
         // Hacking attempt. No point in continuing unless it's a COOKIE
         if ($varname !== 'GLOBALS' || isset($_GET['GLOBALS']) || isset($_POST['GLOBALS']) || isset($_SERVER['GLOBALS']) || isset($_SESSION['GLOBALS']) || isset($_ENV['GLOBALS']) || isset($_FILES['GLOBALS']))
         {
            exit;
         }
         else
         {


Phpbb3 n'est pas content que j'aie des variables, et il me sort.
En commentant le "exit" ça fonctionne, mais mon forum s'expose à une vulnérabilité.
Si j'ai bien compris je dois ajouter dans les tests mes variables-tableau propres au site, crées hors forum...
Doctsf
Posteur néophyte
Posteur néophyte
 
Messages: 22
Inscription: 19 Sep 2008 à 07:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Doctsf » 21 Nov 2008 à 21:42

Donc ça fonctionne, mais...
seulement sur les pages à la racine de mon site.
Pour les autres mes variables sessions passent bien, mais phpbb ne m'envoie pas les infos de connexion forum...
Mystère...

[edit:] c'est un problème de sous-domaine.
Une idée ?
Doctsf
Posteur néophyte
Posteur néophyte
 
Messages: 22
Inscription: 19 Sep 2008 à 07:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 21 Nov 2008 à 22:18

Doctsf a écrit:Phpbb3 n'est pas content que j'aie des variables, et il me sort.
plus exactement, il n'est pas content que tu utilises CERTAINES variables
En commentant le "exit" ça fonctionne, mais mon forum s'expose à une vulnérabilité.
vois ce que ça donne en remplaçant
Code: Tout sélectionner
exit;
par
Code: Tout sélectionner
die("varname = $varname");
on saura ainsi quelle est la variable qui coince
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar Doctsf » 21 Nov 2008 à 22:55

Merci pour ton aide.
J'ai modifié common.php comme suit, et ça marche nickel :

Code: Tout sélectionner
   foreach ($input as $varname)
   {
      if (isset($not_unset[$varname]))
      {
         // Hacking attempt. No point in continuing unless it's a COOKIE
         if ($varname !== 'GLOBALS' || isset($_GET['GLOBALS']) || isset($_POST['GLOBALS']) || isset($_SERVER['GLOBALS']) || isset($_SESSION['GLOBALS']) || isset($_ENV['GLOBALS']) || isset($_FILES['GLOBALS']))
         {
            if ($varname=='xxx' || $varname=='yyy' || $varname=='zzz' ){
               // ok ce sont mes variables
            }else{
               exit;
            }


Il ne me reste qu'un problème avec les sous-domaines (sessions perdues dans ce cas), mais au pire je vire les sous-domaines et je remets les chemins classiques pour toutes mes pages.

Merci à tous
Jean-Michel
Doctsf
Posteur néophyte
Posteur néophyte
 
Messages: 22
Inscription: 19 Sep 2008 à 07:27

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 22 Nov 2008 à 06:59

Doctsf a écrit:
Code: Tout sélectionner
            if ($varname=='xxx' || $varname=='yyy' || $varname=='zzz' ){
               // ok ce sont mes variables

non, ça n'est pas une bonne solution car tu introduis une faille de sécurité.
ça n'est pas sans bonnes raisons que le script t'interdit d'utiliser pour $_GET, $_POST, $_COOKIE ou $_SESSION les clés suivantes: 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_SESSION', '_ENV', '_FILES', 'phpEx', 'phpbb_root_path'

par exemple si tu utilise cette variable de session $_SESSION['phpbb_root_path'], normalement common.php va te bloquer. plutôt que d'empêcher ce blocage par ton bricolage, il est préférable de renommer la variable de session par, par exemple, $_SESSION['mon_phpbb_root_path']
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar GhostKiller » 22 Nov 2008 à 13:32

Bonjour, je n'avais pas fais attention, mais mes news ne s'affiche pas dans l'ordre décroissant
http://www.wakfu-france.fr/news.php
Code: Tout sélectionner
$where = ($forum_id) ? " WHERE t.forum_id=$forum_id" : '';
$sql = 'SELECT t.forum_id,t.topic_id, t.topic_time, t.topic_title, t.topic_replies, t.topic_poster, t.topic_first_poster_name, t.topic_first_poster_colour, p.post_text, p.bbcode_bitfield, p.bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height

FROM ((' . TOPICS_TABLE . ' t JOIN ' . POSTS_TABLE . ' p ON p.post_id=t.topic_first_post_id) JOIN ' . USERS_TABLE . ' u ON p.poster_id=u.user_id) ' .
          $where .
        ' GROUP BY t.topic_id ';
          ' ORDER BY topic_time DESC ' .
          ' LIMIT 0 , 10 ';

Pourtant le DESC ce trouve à sa place :o
Edit: j'ai corrigé:

Code: Tout sélectionner
        ' GROUP BY t.topic_id ' .
          ' ORDER BY topic_time DESC ' .
          ' LIMIT 0 , 10 ';


Petite dernière chose, est il possible de générer un lien pour les anciennes news ? (donc celle qui dépasse la 10enes)
Merci bonne journée
Image
GhostKiller
Posteur néophyte
Posteur néophyte
 
Messages: 52
Inscription: 18 Avr 2007 à 20:16

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 22 Nov 2008 à 14:32

GhostKiller a écrit:Petite dernière chose, est il possible de générer un lien pour les anciennes news ? (donc celle qui dépasse la 10enes)

non, mais on peut mettre une pagination
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar GhostKiller » 22 Nov 2008 à 15:13

(ce n'est pas pareil ? :p)

Sinon comment esse possible :)

Merci encore pour ton aide très précieuse !
Image
GhostKiller
Posteur néophyte
Posteur néophyte
 
Messages: 52
Inscription: 18 Avr 2007 à 20:16

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 22 Nov 2008 à 17:08

on utilise pour ça la fonction phpBB générate_pagination. celle-ci demande comme paramètres:
  • l'url, donc ici news.php
  • le nombre total d'items
  • le nombre d'items par page
  • le n° de page en cours
  • un paramètre optionnel, de type booléen, qui si vrai va afficher en plus de la pagination un lien page suivante/précédente

donc première chose: savoir le nombre total de news. donc avant ta requête sql parcourant toutes tes news, tu vas en faire une première juste après
Code: Tout sélectionner
$where = ($forum_id) ? " WHERE t.forum_id=$forum_id" : '';
qui calcule le nombre total de news:
Code: Tout sélectionner
$sql = 'select count(t.topic_id) as total_topics FROM ' . TOPICS_TABLE . ' t ' . $where;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$total_topics = $row['total_topics'];

tout de suite après, on calcule le n° de page en cours
Code: Tout sélectionner
$start = request_var('start', 0);

maintenant, tu vas modifier la requête sql qui parcourt les 10 premiers topics en remplaçant
Code: Tout sélectionner
' LIMIT 0 , 10 ';
par
Code: Tout sélectionner
" LIMIT $start , 10 ";


maintenant, pour afficher la pagination, tu n'auras plus qu'à faire, là où tu veux qu'elle s'affiche:
Code: Tout sélectionner
echo generate_pagination(append_sid("news.$phpEx"), $total_topics, 10, $start, true);
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar xanatos » 27 Nov 2008 à 17:36

bonjour,

voila jusqu'à maintenant je n'avais pas eu besoin de m'inscrire car je trouvait tout très bien fait sur ce forum et j'y arrivait sans aide

mais j'ai la un problème :

je veut créé une page de login extérieur au forum comme spécifié dans la doc
documentation-phpbb3/sujet154874.html#p1183736

cela me met un message d'erreur et je n'est pas bien compris comment faire (meme si c'est expliqué dans le topic j'aurai besoin d'aide)
documentation-phpbb3/sujet154874.html#p1183744
l'histoire du header.php et footer.php, je ne sait pas par quoi les remplacer et ne suis pas sur que cela vienne de la

page vierge du login pour test
http://www.freresdebatailles.com/index3.php

voila le code de index3.php http://freredebataille.free.fr/index3.txt

page dans lequel le login va être mis
http://www.freresdebatailles.com/index2.php


merci d'avance
Dernière édition par xanatos le 27 Nov 2008 à 19:29, édité 1 fois.
xanatos
Posteur néophyte
Posteur néophyte
 
Messages: 5
Inscription: 12 Juin 2007 à 17:20

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar spitfire pat » 27 Nov 2008 à 18:33

xanatos
sur http://www.freresdebatailles.com/index2.php le formulaire de connexion est déjà présent, il ne te reste plus qu'à traiter le retour de formulaire comme indiqué sur le tuto
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15310
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: [INFO] sur l'utilisation des sessions de phpBB3 sur son site

Messagepar xanatos » 27 Nov 2008 à 19:16

Ok j'ai résolu mon problème merci pour le coup de pouce ça ma permis de trouvé mon erreur :D

merci

Xanatos :wink:
xanatos
Posteur néophyte
Posteur néophyte
 
Messages: 5
Inscription: 12 Juin 2007 à 17:20

PrécédenteSuivante

Retourner vers Coding, Webmastering et Sécurité informatique

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

Partenaires : phpBBHacks.com • phpBB-Seo.com • EzCom-fr.com • phpBB3 Styles • phpBB podpora • phpBB Portugal    Liens : Net Avenir • PromoBenef • Ticket Gagnant