Comme vous le savez peut être, phpBB offre un système d’authentification complet qui permet de gérer totalement les utilisateurs du forum (messages perso, gestion de la perte du mot de passe, espace perso, suivi des utilisateurs).
Alor pourquoi redévelopper pour votre site un système utilisateur qui remplirait la même fonction ?
A moins que vous aimiez réinventer la roue je vous propose une méthode pour étendre l’authentification de votre forum phpBB à l’ensemble de votre site.
Introduction :
Le module d’authentification sera développez en PHP et JavaScript. L’AJAX permettra une authentification rapide et souple.
Avant de commencer
Il faut bien entendu avoir installé complètement phpBB3. Dans les exemples de ce tutoriel, le forum est installé dans le dossier /forum à la racine du site.
Le JavaScript utilise la bibliothèque Jquery 1.3.2, ne pas oublié de l’insérer (tous est dans le zip).
Structure du module :
- - Un fichier JavaScript : auth.js
- - Deux fichiers PHP à insérer dans toutes les pages du site
- - Fichier de vérification des sessions phpBB : auth_session_check.php
- - Fichier pour l’interface utilisateur (formulaire de connexion) : auth_template.php
- - Un fichier PHP pour le test de connexion : auth_log_target.php
- - Et bien sur un fichier pour tester le module : auth_index.php
Partie 1 : JavaScript
L’authentification externe de phpBB est basée sur l’appel de script, il suffit donc d’appelé la page de login de phpBB avec les identifiants et les bonnes variable le tout en Ajax.
Fonction de connexion :
/**
* Fonction de connexion
*/
$("#subCo").live('click',function(){
$("#subCo").attr("disabled","disabled");
$("#subCo").val(" ... ");
login = $('#usernameCo').val();
pass = $("#passwordCo").val();
//on appel une page en ajax et en mode post grace à la fonction Jquery $.post
$.post("/forum/ucp.php?mode=login", {
login:"Login",
username:login,
password:pass,
redirect:"auth_log_target.php"
}, function(data){//retour de l'appel ajax
//on appel la page pour valider l'authentification
$.get("/auth_log_target.php",null,function(data){
if(data == "ok"){
//authentification réussie on recharge la page
location.reload();
}else{
//authentification échouée
$("#subCo").val("OK");
$("#errorCo").html("Echec login.");//insertion du message d'erreur
$("#passwordCo").val("");
$("#subCo").attr('disabled',false);
}
});
});
});
Fonction de déconnexion :
/*** Fonction de déconnexion
*/ $("#boutonDeco").click(function(){
$.get("/forum/ucp.php",{mode:"logout",sid:$(this).attr('sid')},function(data){
location.reload();
});
});
Partie 2 : PHP
Le fichier de vérification de session : auth_session_check.php (à placer au début de chaque page)
Il permet de récupérer la session phpBB et donc de savoir si l’utilisateur est connecté ou non. La session phpBB possède beaucoup d’autre variable qui peuvent vous être utile :
user_id - ID number of the user
group_id - 1
user_perm_from - 0
user_ip - ip de l'utilisateur
username – nom d’utilisateur
username_clean – nom d’utilisateur sans caractère spéciaux
user_email – adresse mail de l’utilisateur
…
(Liste complète : voir source)
Code :
session_start();
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
$phpEx = 'php';
require($phpbb_root_path . 'common.php');
//récupération de la session phpbb
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$loggedIn = $user->data['is_registered']; //l'utilisateur courant est t'il connecté
Fichier pour l’interface utilisateur (formulaire de connexion) : auth_template.php
Un simple formulaire à insérer dans toutes les pages du site pour permettre l’authentification.
Si l’utilisateur est connecté alors on peut lui proposé un bouton de déconnexion et quelques renseignement : message non lus, accès au compte …
require_once "_auth_session_check.php";
if(!$loggedIn){
//l'utlisateur n'est pas connecté
//affichage du formulaire de connexion
}else{
//l'utlisateur est connecté
}
echo $return;
Fichier pour le test de connexion : auth_log_target.php
Permet d’avoir la réponse à la tentative de connexion Ajax.
require_once "_auth_session_check.php";
if($loggedIn){
//la connexion a réussie
$return = "ok";
}else{
//la connexion a échouée
$return = "Login ou mot de passe incorect.";
}
echo $return;
Téléchargement :
Pour mieux comprendre ou tester le module télécharger l’archive :
Tous les fichiers du tutoriel
Source :
http://www.phpbb.com/kb/article/phpbb3-sessions-integration/

