TUTORIELS - VBCORP.FR

ACCUEIL > ARTICLE > TUTORIELS > AUTHENTIFICATION PHPBB EXTERNE EN AJAX AVEC JQUERY
Manu
Tutoriel  pour utiliser l’authentification phpBB3 partout sur votre site, en PHP et JavaScript (Jquery).
<?php echo $vb_article->getTitre() ?>

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/