Il y a pas mal de projets qui commencent par un forum (généralement PHPBB) et qui souhaitent se développer. La problématique est alors, que faire :
- Tout refaire et repartir de 0
- Installer l’addon de Portail PHPBB
- Développer un site en utilisant les données du forum
La première option est hors de propos, la seconde par géniale, alors on opte pour la troisième et ce n’est pas vraiment difficile, c’est même assez simple.
Pour faire plus simple, on découpe le code des pages :
1 2 3 4 5 6 7 8 9 |
<?php include('header.php'); // Contient les informations liées à PHPBB ?> Contenu de la page <?php include ('tpl/footer.php'); // Contient le footer du site, pas de dessin ?> |
Le fichier header.php
1 2 3 4 5 6 7 8 9 |
define('IN_SITE', true); // Est une partie du site define('IN_PHPBB', true); // Est une partie de phpbb $phpbb_root_path = '../forum/'; // Chemin relatif vers le forum $phpEx = substr(strrchr(__FILE__, '.'), 1); // Extensions des scripts include($phpbb_root_path . 'common.' . $phpEx); // Inclusion des scripts $user->session_begin(); // Début de la session $auth->acl($user->data); // Informations de la session $user->setup(); // Initialisation des informations de la session en cours $whoIsOnline=$auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'); // Qui est en ligne |
1 |
Les fichiers de fonctions, classes etc…
Pour éviter d’avoir des scripts qui puissent être lancés indépendamment (générant des failles de sécurité), on ajoute toujours ce code dans ces derniers :
1 |
; html-script: false ]!defined('IN_PHPBB') || !defined('IN_SITE') ? exit : true; |
Littéralement, si on est pas dans le site ET le forum, on quitte !
On peut aussi faire une variante avec une page d’erreur.
1 |
; html-script: false ]!defined('IN_PHPBB') || !defined('IN_SITE') ? include('tpl/erreur_403.php') : true; |
Partant de là, on peut utiliser toutes les variables et fonctions de PHPBB.
Faites un fichier ‘test.php’ avec le code suivant :
1 2 3 4 5 6 7 8 9 |
; html-script: false ]<?php foreach ($user->data as $key => $value) { echo '<tr>'; echo '<td>'.$key.'</td>'; echo '<td>'.$value.'</td>'; echo '</tr>'; }; ?> |
Si le bridge fonctionne, vous allez obtenir toutes les informations directement exploitables de la session en cours, faites quand même attention à quelle information vous utilisez et de quelle manière vous les utilisez, certaines sont sensibles comme l’id de session (session_id) ou user_form_salt.
Bouts de code…
1 2 3 4 5 6 7 8 9 10 11 |
<?php // Utilisateur connecté ou non if ($user -> data['user_id'] == 1) { // non connecté } else { // connecté } // Lien de déconnexion echo '<a href="' . append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=logout', true, $user -> session_id) . '">'; ?> |