FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Recherche rapide

Intégration dans un site web

Questions fréquentes

Utilisation de ''common.php''

Intégrer FluxBB dans le code de votre site web est facile si vous connaissez un petit peu PHP. En incluant le script common.php de FluxBB, vous accédez à toutes les variables globales de FluxBB comme $db et $pun_user. Cependant, afin d'inclure ce fichier, vous devez définir une constante appelée PUN_ROOT. Cette constante devra fixer le chemin relatif vers votre répertoire de forums PunBB. Par exemple, si votre page d'accueil de votre site est localisée dans /home/user/public_html/ et vos forum sont dans /home/user/public_html/forums/, votre PUN_ROOT devrait alors être ./forums/

Le code PHP pour accomplir ceci pourrait ressembler à quelque chose comme ça :

define('PUN_ROOT', './forums/');
require PUN_ROOT.'include/common.php';

Une fois que vous avez inclus common.php, vous pouvez accéder et utiliser toutes les variables globales et fonctions de FluxBB. Typiquement, vous serez le plus intéressé par le tableau $pun_user. Ce tableau contient des informations sur l'utilisateur courant. Une autre variable intéressante est l'objet de base de données $db. Comment employer ces variables dans vos propres scripts est hors du propos de ce document, mais voici un petit exemple vous montrant comment afficher un message simple saluant l'utilisateur courant sur votre page d'accueil :

Bonjour <?php echo pun_htmlspecialchars($pun_user['username']); ?> !

En plus de définir PUN_ROOT, vous pouvez définir un certain nombre d'autres constantes pour changer le comportement de FluxBB en incluant common.php. Les deux plus intéressantes de ces constantes sont PUN_TURN_OFF_MAINT et PUN_QUIET_VISIT. Si PUN_TURN_OFF_MAINT est défini en incluant common.php, si les forums sont en mode maintenance, FluxBB ne bloquera pas pour afficher le message de maintenance. Vous ne voulez généralement pas que ce message s'affiche sur votre page d'accueil, pour cela définir cette constante est une bonne idée. L'autre constante, PUN_QUIET_VISIT, empêche FluxBB de mettre à jour les données de dernière visite de l'utilisateur courant dans la base de données de sorte qu'une visite à la page d'accueil ne compte pas comme visite dans les forums. C'est également un comportement souhaitable dans la plupart des cas. La valeur à laquelle vous placez ces constantes n'importe pas, mais les régler à une valeur de 1 est probablement une bonne idée. Exemple:

define('PUN_TURN_OFF_MAINT', 1);
define('PUN_QUIET_VISIT', 1);

Veuillez noter que ces constantes doivent être définies avant que common.php soit inclus.

Pour connaitre toutes les données auxquelles vous avez accès avec cette méthode utiliser le script suivant : donnees_punbb.txt renommez-le en utilisant l'extension .php et ajustez la constante PUN_ROOT en haut de ce fichier ; ensuite placez-le sur votre serveur, enfin lancez-le et regardez le résultat dans votre navigateur.

Créer des zones en fonction du groupe des utilisateurs

Après avoir mis en place common.php sur vos pages comme indiqué ci-dessous, vous pouvez mettre en place des zones qui s'affichent en fonction du groupe des utilisateurs.

FluxBB comporte 4 groupes d'utilisateurs pré-définis : Administrateurs, Modérateurs, Invités et Membres. À chacun de ces groupe correspond un identifiant numérique :

  • Administrateurs : 1
  • Modérateurs : 2
  • Invités : 3
  • Membres : 4

Ces identifiants sont stockés dans la base de données mais “une copie” est placée dans des constantes afin d'accéder facilement à ces identifiants partout dans le script. Ces constantes sont définies dans le fichier common.php

<?php
define('PUN_ADMIN', 1);
define('PUN_MOD', 2);
define('PUN_GUEST', 3);
define('PUN_MEMBER', 4);
?>

Donc la constante PUN_ADMIN est égale à l'identifiant du groupe administrateur, PUN_MOD est égale à l'identifiant du groupe modérateur, etc.

Ainsi, avec une petite comparaison vous pouvez facilement créer des pages (ou des morceaux de code) accessibles seulement aux administrateur ou seulement au membres etc. Ci-dessous quelques exemples.

Afficher des données différentes si l'utilisateur est un administrateur :

<?php
if ($pun_user['g_id'] > PUN_ADMIN)
    echo 'Vous n\'êtes pas administrateur.';
else
    echo 'Vous êtes administrateur.';
?>

Afficher des données différentes si l'utilisateur est un modérateur ou administrateur :

<?php
if ($pun_user['g_id'] > PUN_MOD)
    echo 'Vous n\'êtes ni modérateur ni administrateur.';
else
{
    if ($pun_user['g_id'] == PUN_MOD)
        echo 'Vous êtes modérateur.';
    else
        echo 'Vous êtes administrateur.';
}
?>

Aussi dans le tableau de données utilisateur une ligne permet de tester directement si l'utilisateur est un invité, cet index est $pun_user['is_guest'] et vaut TRUE si l'utilisateur est un invité FALSE si il est identifié.

On peut ainsi afficher par exemple des données uniquement pour les invités :

if ($pun_user['is_guest'])
     echo 'Vous n\'êtes pas identifié';
else
    echo 'Vous êtes identifié en tant que '.pun_htmlspecialchars($pun_user['username']);

PunBB Simple API (PunSAPI)

PunBB Simple API est une sorte de boite à outil pour jouer avec FluxBB sur votre site. Ce script reviens à utiliser le fichier common.php de FluxBBmais fournis en plus des méthodes prêtes à l'emploi pour manipuler facilement les données provenant de FluxBB.

Effectuez une recherche avec le terme “PunSAPI” sur le forum Mods vous devriez trouver des infos..

Ajouter un formulaire d'identification sur votre site

C'est bien beau de pouvoir utiliser le système d'authentification de FluxBB sur votre site mais si les utilisateurs doivent passer par les forums pour s'identifier c'est pas génial. Voici donc comment mettre en place un formulaire d'identification sur votre site.

Il s'agit d'un simple formulaire HTML. L'action (la page où est envoyée le formulaire) est la page login.php de vos forums. Il faut donc adapter l'attribut action en fonction d'où se trouve vos forums. Comme pour les autres exemple nous considérons ici qu'ils se trouvent dans ./forums/ Aussi, un champs caché permet d'enregistrer l'URL de la page où rediriger l'utilisateur après la connexion.

Voici le formulaire de base, il n'y a que le minimum, à vous d'ajouter le HTML nécessaire pour qu'il corresponde à votre site :

<form action="./forums/login.php?action=in" method="post">
    <fieldset>
	<input type="hidden" name="form_sent" value="1" />
	<input type="hidden" name="redirect_url" value="page_redirige.php" />
 
	<p><label>Nom d'utilisateur<input type="text" name="req_username" size="13" maxlength="25" /></label></p>
	<p><label><strong>Mot de passe</strong><input type="password" name="req_password" size="13" maxlength="16" /></label></p>
 
	<input type="submit" name="login" value="Connexion" />
    </fieldset>
</form>

On voit donc à la première ligne du formulaire l'adresse de celui-ci sur les forums à adapter selon où vous placez ce formulaire et selon où se trouve vos forums.

On voit aussi la troisième ligne avec le champs caché redirect_url réglé sur la page page_redirige.php Ici vous pouvez très bien utiliser PHP pour par exemple mettre à la place de cette valeur :

<?php echo $_SERVER['REQUEST_URI'] ?>

Ainsi les utilisateurs seront redirigés sur la page où se trouve le formulaire.

Il est inutile d'afficher ce formulaire aux personnes déjà identifiées. C'est donc l'occasion de mettre à profit ce que nous avons vu dans le chapitre précédent.

Lier le système d'authentification de PunBB à celui de Dokuwiki

Avec cette méthode vous pourrez utiliser les comptes utilisateurs de FluxBB sur votre wiki DokuWiki.

Attention : il existe un bug avec cette manipulation : si vous allez dans “admin > paramètres de configuration”, cela écrase la configuration d'authentification FluxBB dans votre wiki

Pré-requis

  • Une installation de FluxBB
  • Les forums doivent être sur le même domaine que le wiki
  • magic_quotes_gpc doit être désactivé (On peut contourner le problème en réécrivant la fonction)

Configuration

Dokuwiki intègre une fonctionnalité permettant d'utilisé le système d'authentification de FluxBB. Il suffit donc de ce rendre dans les paramètres d'administration de dokuwiki et changer dans “Paramètres d'authentification” :

  • Backend d'authentification = punBB
  • Super-utilisateur = @Administrateurs
  • Méthode de cryptage des mots de passe : sha1

Si FluxBB se trouve dans ../forum (sans s) ça devrait fonctionner. Sinon il faut ajouter un fichier ”/dokuwiki/conf/local.protected.php” contenant :

<?php define('PUN_ROOT', dirname(__FILE__).'/../../dossier_forum/');

Réécriture de magic_quotes_gpc

Chez certains hébergeurs, magic_quotes_gpc est activé. A l'origine, Dokuwiki exige qu'il soit désactivé. Normalement ce hack ne devrait pas poser problème, mais je n'ai pas put le tester partout. Faire des copies de sauvegardes du fichier d'origine.
Ouvrez le fichier inc/auth/punbb.class.php
Recherchez :

if(get_magic_quotes_gpc()){
  nice_die('Sorry the punbb auth backend requires the PHP option
  <a href="http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc">magic_quotes_gpc</a>
  to be disabled for proper operation. Either setup your PHP install accordingly or
  choose a different auth backend.');
}

Remplacez-le par :

if (get_magic_quotes_gpc()) {
    function stripslashes_deep($value)
    {
        $value = is_array($value) ?
                    array_map('stripslashes_deep', $value) :
                    stripslashes($value);
 
        return $value;
    }
 
    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
}
 
fluxbb_1_2/integration_site.txt · Dernière modification: 2010/06/26 22:26 (édition externe)