[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 Casio » 03 Déc 2008 à 14:42

spitfire pat a écrit:je t'ai indiqué à partir de quel message de ce topic on parlait de l'affichage du contenu des posts

En effet, mais cela reste assez vague pour moi... Je n'ai pas votre bagage de connaissances dans le domaine... erf ... :(
Image
Avatar de l’utilisateur
Casio
Posteur expérimenté
Posteur expérimenté
 
Messages: 369
Inscription: 02 Jan 2004 à 19:09
Localisation: Paris XVII / FRANCE

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

Messagepar spitfire pat » 03 Déc 2008 à 15:57

Casio a écrit:En effet, mais cela reste assez vague pour moi... Je n'ai pas votre bagage de connaissances dans le domaine... erf ... :(

ben attend, c'est expliqué point à point, et c'est assorti de demandes d'explication... je ne vais quand même pas recommencer!
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15313
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagepar snipx » 04 Déc 2008 à 15:51

Bonjour à tous,

Je tente d'insérer un utilisateur de ma base dans celle de phpBB3 et je dois dire que je n'ai encore jamais passé autant de temps à essayer de faire un "insert" ...

erreur : "Call to a member function sql_query() on a non-object in www\forum\includes\cache.php on line <b>51".


voici le code (le login correspond à l'email de l'internaute) :

Code: Tout sélectionner
function insert_into_PHPBB3($email, $password){
         
      define('IN_PHPBB', true);
         $phpbb_root_path = '../forum/';
         $phpEx = substr(strrchr(__FILE__, '.'), 1);
         include($phpbb_root_path . 'common.' . $phpEx);
         include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
         $user->session_begin();
         $auth->acl($user->data);
         $user->setup('ucp');
      
      // On effectue une requête qui vérifie si l'internaute existe déjà
      $sql = "SELECT * FROM 'login' WHERE userid = '$email'";
      $req = mysql_query($sql);
      $res = mysql_num_rows($req);
         
      // Si il existe déjà, on refuse l'inscription et on retourne une erreur qui explique pourquoi.
      if ($res == 0) {
         $username=utf8_normalize_nfc($email);   
         $password = phpbb_hash($password); 
         $email = strtolower($email);   
         
         $group_id = 2; 
         
         $is_dst = $config['board_dst'];
         $timezone = $config['board_timezone'];
         $user_lang = 'fr';
         $user_type = USER_NORMAL;
         $user_actkey = '';
         $user_inactive_reason = 0;
         $user_inactive_time = 0; 
         
         $user_row = array(
            'username'                => $email,
            'user_password'            => $password,
            'user_email'            => $email,
            'group_id'                => (int) $group_id,
            'user_timezone'            => (float) $timezone,
            'user_dst'                => $is_dst,
            'user_lang'                => $user_lang,
            'user_type'                => $user_type,
            'user_actkey'            => $user_actkey,
            'user_ip'                => $user->ip,
            'user_regdate'            => time(),
            'user_inactive_reason'    => $user_inactive_reason,
            'user_inactive_time'    => $user_inactive_time,
         );
         $user_id = user_add($user_row);
         if ($user_id === false)
         {
            die("erreur à l'enregistrement de l'utilisateur");
         }
      }
   } 




Si vous aviez une idée, ça m'enlèverait une belle épine du pied.

Merci
snipx
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 04 Déc 2008 à 13:00

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

Messagepar spitfire pat » 04 Déc 2008 à 16:10

snipx
ces lignes
Code: Tout sélectionner
define('IN_PHPBB', true);
         $phpbb_root_path = '../forum/';
         $phpEx = substr(strrchr(__FILE__, '.'), 1);
         include($phpbb_root_path . 'common.' . $phpEx);
         include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
         $user->session_begin();
         $auth->acl($user->data);
         $user->setup('ucp');
ne doivent pas être mises à l'intérieur d'une fonction
met-les dans ton script principal
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15313
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagepar snipx » 04 Déc 2008 à 16:21

Salut Spit !

Sur mon site, j'ai une page html qui charge un formulaire d'inscription via ajax.
J'ai inséré les lignes citée dans la page html appelante avant le doctype et ça me renvoit :

: Call to undefined function utf8_normalize_nfc()

Code: Tout sélectionner
function insert_into_PHPBB3($email, $password){
   include "connection.php";
         $username=utf8_normalize_nfc($email);   //pour que le pseudo soit correctement codé en utf8
         $password = phpbb_hash($password);    //cryptage du mot de passe
         $email = strtolower($email);    //mise de l'email en lettres minuscules   
         
         $group_id = 2; 
         
         $is_dst = $config['board_dst'];
         $timezone = $config['board_timezone'];
         $user_lang = 'fr';
         $user_type = USER_NORMAL;
         $user_actkey = '';
         $user_inactive_reason = 0;
         $user_inactive_time = 0; 
         
         $user_row = array(
            'username'                => $username,
            'user_password'            => $password,
            'user_email'            => $email,
            'group_id'                => (int) $group_id,
            'user_timezone'            => (float) $timezone,
            'user_dst'                => $is_dst,
            'user_lang'                => $user_lang,
            'user_type'                => $user_type,
            'user_actkey'            => $user_actkey,
            'user_ip'                => $user->ip,
            'user_regdate'            => time(),
            'user_inactive_reason'    => $user_inactive_reason,
            'user_inactive_time'    => $user_inactive_time,
         );
         $user_id = user_add($user_row);
         if ($user_id === false)
         {
            die("erreur à l'enregistrement de l'utilisateur");
         }
      
   }


Et la fonction utf8_normalize_nfc n'existe pas dans le fichier functions_user.php du répertoire includes

Je peux remplacer par un strtolower(utf8_encode($email)) sans trop de risque ? (vu que le login c'est l'email dans mon cas)
snipx
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 04 Déc 2008 à 13:00

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

Messagepar spitfire pat » 04 Déc 2008 à 18:46

snipx a écrit:Et la fonction utf8_normalize_nfc n'existe pas dans le fichier functions_user.php du répertoire includes

cette fonction se trouve dans utf_tools qui est inclus par common.php, donc, normalement, tu ne devrais pas avoir cette erreur.
tu me parles d'une requête ajax, mais alors cette fonction insert_into_PHPBB3, elle se trouve OU ?
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15313
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagepar snipx » 04 Déc 2008 à 23:59

(Désolé je viens seulement de rentrer ...)

Pour résumer, j'ai une page index.php qui charge une partie de son contenu par un appel AJAX vers formulaire.php,
lorsque l'internaute valide son inscription, une autre requete AJAX appelle le script inscription_client.php, qui
crée un objet client et qui appelle la fonction adéquate.

Donc la fonction insert_into_PHPBB3 se trouve dans ma classe Client.php

C'est bizarre tout de même, j'ai pourtant téléchargé la dernière version FR
Code: Tout sélectionner
 http://www.phpbb.fr/telechargement.php

Apparemment, la session se fait, les includes ont l'air de se faire aussi et j'ai bien vérifié, comme tu dis la fonction existe et est appelée
par common.php ...
snipx
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 04 Déc 2008 à 13:00

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

Messagepar spitfire pat » 05 Déc 2008 à 05:21

snipx a écrit:Donc la fonction insert_into_PHPBB3 se trouve dans ma classe Client.php

dans ce cas, c'est le script qui crée une instance de la classe qui doit au préalable lancer la session phpBB
et dans ta fonction insert_into_phpBB3, tu mettras en premier
Code: Tout sélectionner
global $db, $config, $template, $user, $auth, $phpbb_root_path, $phpEx, $lang;
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15313
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagepar snipx » 05 Déc 2008 à 10:12

Ca fonctionne ! Merci !
snipx
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 04 Déc 2008 à 13:00

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

Messagepar snipx » 05 Déc 2008 à 11:39

Je pensais à autre chose en lien direct ...
Si un utilisateur oublie son mot de passe, un autre mot de passe est généré pour le forum mais par pour mon site.
2 solutions :
- soit il y a une solution pour que phpBB3 renvoit uniquement le mote de passe sans le regénéré,
- soit phpBB3 met à jour ma base de données des utilisateurs

Es-ce que vous avez un bout de solution pour ce cas ?
snipx
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 04 Déc 2008 à 13:00

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

Messagepar spitfire pat » 06 Déc 2008 à 21:31

snipx a écrit: - soit il y a une solution pour que phpBB3 renvoit uniquement le mote de passe sans le regénéré,
y a pas
- soit phpBB3 met à jour ma base de données des utilisateurs
pas de solution simple, d'ailleurs pourquoi travailler sur 2 bases d'utilisateurs.....
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15313
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagepar snipx » 07 Déc 2008 à 00:44

Ok. Il y a des infos qui ne sont pas dans la table des users de phpBB3 ...
je me vois mal recoder la fonction add_user (modify_user, delete_user ...) de phpBB3 pour y insérer proprement mes données
En gros il faudrait que je m'investisse à fond dans le projet phpBB juste pour le raccrocher au site ...
sans compter qu'il y aura aussi un moteur de blog la dessus ... je vois pas trop comment intégrer les 3 systèmes proprement,
sans gérer 3 bases /= (par ailleurs les internaute ne vont pas forcément sur le forum et ne désirent pas forcément créer leur page).
snipx
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 04 Déc 2008 à 13:00

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

Messagepar spitfire pat » 07 Déc 2008 à 05:58

snipx a écrit:je me vois mal recoder la fonction add_user (modify_user, delete_user ...) de phpBB3 pour y insérer proprement mes données

il te suffit d'ajouter les champs correspondants à la table phpbb_users et de renseigner en conséquence le tableau user_row avant l'appel à la fonction user_data. Ca se fait sans toucher à une seule ligne des scripts spécifiques de phpBB, ce qui ne serait pas le cas si tu cherchais à faire en sorte que phpBB mette à jour ta table utilisateurs.
Avatar de l’utilisateur
spitfire pat
MOD Contest Winner
MOD Contest Winner
 
Messages: 15313
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagepar snipx » 07 Déc 2008 à 12:45

C'est bien vu, je vais tenter ça.
snipx
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 04 Déc 2008 à 13:00

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

Messagepar snipx » 08 Déc 2008 à 14:24

Je tente d'authentifier les utilisateurs du site en requétant la base du forum mais la comparaison des mots de passes échoue.
Y a-t-il quelque chose que j'aurais aublié ?

Voici le code :

Code: Tout sélectionner
include "connection.php";
      mysql_select_db('forum', $link);
      $select = sprintf("select * from phpbb_users where username='%s' and user_password='%s'", utf8_normalize_nfc($id), phpbb_hash($pass));
      $result = mysql_query($select) or die(mysql_error());
      echo 'mysql_num_rows($result) = ' . mysql_num_rows($result);
      if(mysql_num_rows($result) == 0) return false;
      return true;
snipx
Posteur néophyte
Posteur néophyte
 
Messages: 14
Inscription: 04 Déc 2008 à 13:00

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 2 invités

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