permet de creer une zone membre en symbiose avec un forum phpbb . des que l'on se logue sur phpbb on l'est aussi tot sur la zone membre et le contraire
tuto sur les cookies phpbb :
http://iow4.net
Source / Exemple :
1 ere source ( autologin.php ) permet de reconnaitre un user qui c'est connecte sous phpbb
------------------------------------------
<?php
session_start();
///////////////////////////////////////////////////////
/* log automatique un user d'apres son cookie phpbb */
/////////////////////////////////////////////////////
include("config.php");
/* on chope le nom du cookie sous phpbb */
// interoge la base mysql
$reponse = mysql_query("SELECT * FROM phpbb_config WHERE config_name='cookie_name' ") ;
while ($donnees = mysql_fetch_array($reponse) )
{
$nom_cookie = $donnees['config_value'];
}
// on ajoute le grain de sel
$cookie1 = $nom_cookie."_sid" ;
$cookie2 = $nom_cookie."_data" ;
/* test de l'existence de ces petites betes ;) */
if (isset ($HTTP_COOKIE_VARS[$cookie1]) AND isset ($HTTP_COOKIE_VARS[$cookie2]))
{
// extraction du cookie
$tmp = array();
$tmp = unserialize($HTTP_COOKIE_VARS[$cookie2]);
$autologin_id = $tmp['autologinid'];
$user_id = $tmp['userid'];
// login du membre
// recupere le pseudo
// verifie qu'il existe
$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM phpbb_users WHERE user_id='$user_id' AND user_password='$autologin_id' ") or die("erreur dans le requete sql ") ; // compte
$donnees = mysql_fetch_array($retour);
$nbr = $donnees['nbre_entrees'];
if ( $nbr == 0 )
{
echo "erreur dans votre identification" ;
exit();
}
// chope pseudo
$reponse = mysql_query("SELECT * FROM phpbb_users WHERE user_id='$user_id' AND user_password='$autologin_id' ") ;
while ($donnees = mysql_fetch_array($reponse) )
{
$pseudo = $donnees['username'];
}
// accorde les droits
echo "authentification reussite" ;
$_SESSION['auth'] = true ;
$_SESSION['pseudo'] = $pseudo ;
header("location:zone_rouge/");
}
else
{
header("location:index.php"); // renvoie vers le formulaire
}
?>
-----------------------------
2eme page : log un membre qui ne l'ai pas deja sur le forum en creant le meme cookie que phpbb
d'apres un pseudo et un pass
-----------------------------
<?php
session_start();
include("config.php");
///////////////////////////////////////////////
///////////////////////////////////////////////
/* recupere les var et test */
// test
if ( empty ($_POST['pseudo']))
{
echo "pas de pseudo renseigne" ;
exit();
}
if ( empty ($_POST['pass']))
{
echo "pas de pass renseigne" ;
exit();
}
// recup
$pseudo = $_POST['pseudo'];
$pass = $_POST['pass'];
// crypt le mot de pass en md5
$pass_crypt = md5($pass);
/* verifie dans phpbb_users */
$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM phpbb_users WHERE username='$pseudo' AND user_password='$pass_crypt' ") or die("erreur dans le requete sql ") ; // compte
$donnees = mysql_fetch_array($retour);
$nbr = $donnees['nbre_entrees'];
if ( $nbr == 0 )
{
echo "erreur dans votre identification" ;
exit();
}
if ( $nbr != 0 ) // c'est ok on accorde les droits
{
echo "authentification reussite" ;
$_SESSION['log'] = true ;
$_SESSION['pseudo'] = $pseudo ;
// cherche l'id du pseudo
$reponse = mysql_query("SELECT * FROM phpbb_users WHERE username='$pseudo' ") ;
while ($donnees = mysql_fetch_array($reponse) )
{
$id = $donnees['user_id'];
}
/* creation du cookie conforme a phpbb */
// chope le nom du cookie
$reponse = mysql_query("SELECT * FROM phpbb_config WHERE config_name='cookie_name' ") ;
while ($donnees = mysql_fetch_array($reponse) )
{
$nom_cookie = $donnees['config_value'];
}
// sa duree
$reponse = mysql_query("SELECT * FROM phpbb_config WHERE config_name='session_length' ") ;
while ($donnees = mysql_fetch_array($reponse) )
{
$dure_cookie = $donnees['config_value'];
}
// on ajoute le grain de sel
$cookie1 = $nom_cookie."_sid" ;
$cookie2 = $nom_cookie."_data" ;
// on serialise les donnees pour le 2eme cookie
$donnees = array();
$donnees['autologinid'] = $pass_crypt ;
$donnees['userid'] = $id ;
$v = serialize($donnees);
// creation de la commande de cookie
setcookie($cookie1,session_id(),time()+$dure_cookie,"/");
// 2eme cookie
setcookie($cookie2,$v,time()+$dure_cookie,"/");
// redirige
header("location:zone/");
}
?>
------------------------------
Conclusion :
voila je n'avais jamais vu de source semblable sur le net alors j'ai codé
pour le site
http://webown.free.fr
Pour des remarques/questions allez sur :
http://iow4.net/forum
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.