Intégration complète de PHPBB3 (partie2)

Comme je l’avait dit nous allons mettre en application ce que nous avons vu dans la première partie de ce tutoriel en mettant en place un petit espace membre.

1. Reprenons notre fichier.

<?php
ini_set('display_errors', true);
define('IN_PHPBB', true);
$phpbb_root_path = './forums/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>

2.Ajoutons de nouvelles fonctionalités.
Nous allons maintenant y ajouter la gestion des actions de login et de déconnection.

if (isset($_GET['logout']))
{
$user->session_kill();
$user->session_begin();
}
if (isset($_POST['login']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$autologin = $_POST['autologin'];
$viewonline = $_POST['viewonline'];
$admin = 0;
$result = $auth->login($username, $password, $autologin,
$viewonline, $admin);
}

Analysons un peu ce que nous venons d’ajouter (il s’agit là d’une version simplifiée les données postées ne sont pas vérifiées).

if (isset($_GET['logout']))
{
$user->session_kill();
$user->session_begin();
}

Ici nous gérons le fait que l’utilisateur demande à se déconnecter, nous commençons donc par fermer la sessions par le biais d’une fonction destinée à cela dans phpbb, puis nous réinitialisons une nouvelle fonction.

if (isset($_POST['login']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$autologin = $_POST['autologin'];
$viewonline = $_POST['viewonline'];
$admin = 0;
$result = $auth->login($username, $password, $autologin,
$viewonline, $admin);
}

Là nous récupérons des données envoyées par formulaire parmis lesquelles un pseudo, un mot de passe, la demande d’un autologin et la demande de la visibilité dans les utilisateurs en ligne.
Le tout est ensuite passé accompagné de la valeur admin égale à 0 (ceci permet de dire qu’il ne s’agit pas d’une connection en tant qu’administrateur) à la fonction phpbb ‘login()’ qui vas gérer la connection.
$result va recevoir un message de retour que nous pourrons utiliser par la suite.

3.L’affichage de notre page.
Nous allons maintenant voir l’affichage de notre page, son formulaire si l’on est déconnecté, le menu membre si l’on est connecté.

if($user->data['is_registered']){
echo "Bienvenue ".$user->data['username_clean'].",<br/>
<a href = 'index.php?logout=1'>Quitter</a>
";
}else{
echo '
<form method="post" action = "?login=1">
<table>
<tr>
<td align="right">Pseudo:</td>
<td><input type="text" tabindex="1" name="username"
size="25" /></td>
</tr>
<tr>
<td align="right">Mot de passe:</td>
<td><input type="password" tabindex="2" name="password"
size="25" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" name="autologin" tabindex="3"
/> Me connecter automatiquement &agrave chaque visite</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="checkbox" name="viewonline"
tabindex="4" /> Cacher mon statut en ligne pour cette
session</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"
name="login" tabindex="5" value="Connexion" /></td>
</tr>
</table>
</form>
';
}

Voila, après essais nous remarquons que notre formulaire de connection fonctionne.
4.Afficher un message d’erreur.

Comme vu plus haut, résult se voit retourner une erreur en cas de probleme de connection, nous pouvons donc en profiter pour indiquer à l’utilisateur qu’il à fait une erreur et laquelle.

Pour cela nous rajoutons dans notre formulaire :

$result = array(); //que nous plaçons au départ de notre document

afin de déclarer la variable.

Puis voici comment nous pourrions nous en servir  :

if ($result['error_msg'] == 'LOGIN_ERROR_USERNAME' ||
$result['error_msg'] == 'LOGIN_ERROR_PASSWORD')
{
if($result['error_msg'] == 'LOGIN_ERROR_USERNAME'){
echo "Mauvais non d'utilisateur.";
}else{
echo "Mauvais mot de passe.";
}
}

Si une erreur nous est retournée nou l’affichons. Bien sur tout ceci peut être amélioré surtout d’un point de vue de la mise en page mais j’espère tout de même que ce tutoriel à été clair et vous sera utile.

1 Commentaire

  1. Bonjour,

    Très intéressants tes 2 articles !

    Je suis développeur Symfony et aide bénévolement des amis à migrer un forum Citroën de phpBB2 en PHPBB3, à aller chez Gandi.net, et à ajouter des fonctions.

    Les 2 premiers points, ça va, par contre venant du monde MVC Symfony, plonger dans le code des BB fait un peu peur. Surtout qu’il n’y a pas de document expliquant l’architecture générale.

    L’idèal serait un site Symfony avec des fonctions « base de données » qui utilise l’authentification phpBB3 et éventuellement renvoie sur le forum phpBB3.

    Il y a bien ce « framework » http://startrekguide.com/community/viewtopic.php?f=98&t=9456 mais le code n’est pas documenté, et c’est assez difficile de comprendre par quel tour de magie les pages s’affichent…

    Donc je lis avec intérêt ce que tu fais !

Trackbacks/Pingbacks

  1. SnnOoze » Les articles à venir - [...] Je pense aussi écrire une deuxième partie à mon article sur l’intégration de PHPBB dans un site internet. [...]

Laisser une réponse