begin process at 2008 07 20 02:53:27
1 213 103 membres
26 nouveaux aujourd'hui
14 166 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ZONE MEMBRE EN SYMBIOSE AVEC LE FORUM PHPBB


Information sur la source

Catégorie :Base de données Classé sous : espace, membre, phpbb, forum, mysql Niveau : Initié Date de création : 26/10/2005 Date de mise à jour : 29/04/2006 18:09:12 Vu : 11 319

Note :
7,25 / 10 - par 4 personnes
7,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

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

  • 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/");
  • }
  • ?>
  • ------------------------------
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
29 avril 2006 18:09:12 :
Changement de catégorie
  • signaler à un administrateur
    Commentaire de coockiesch le 26/10/2005 22:50:17

    Salut!
    L'idée est pas mal mais alors pourquoi utiliser des variables de session?

    Ce que j'avais fais c'est que j'avais rajouté des variables à la session de phpBB ( qui est stockée dans une table mysql ) et comme ca je reste 100% phpBB

    @++

    R@f

  • signaler à un administrateur
    Commentaire de iow4 le 27/10/2005 11:41:25

    lol le systeme d'authentification de phpbb j'y comprend rien !!

    alors pour la zone membre je cree une bonne variable qui me dit si oui ou non l'user est logue

  • signaler à un administrateur
    Commentaire de Shisui le 28/10/2005 14:45:24

    Symbiose, Symbiose c'est vite dit :) Pour que ton script soit encore plus intégré au systéme de phpBB, faudrait rajouter et modifier quelques petites choses, par exemple, au tout début de ton fichier un :
    define('IN_PHPBB', true); // Pour ne pas que les scripts suivants fassent un méchant die() ^^
    $phpbb_dir = './'; // Indiquer ici le répertoire racine de phpBB
    include($phpbb_dir . 'extension.inc'); // Extension des fichiers du forum
    include($phpbb_dir . 'common.'.$phpEx); // Fichier principal de phpBB

    Ensuite, avec ça, tu peut remplacer tout les noms de tables par les constantes de phpBB (et oui, ya des gens qui mettent pas forcément phpbb_ en préfixe des table ^^), à savoir les plus importantes ici : CONFIG_TABLE pour phpbb_config et USERS_TABLE pour phpbb_users.

    Et aussi, tu peut réduire un bout de code de deux requetes SQL à une seule requéte :
                         $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'];
                         }

    Peut etre remplacé par :
                         $retour = mysql_query("SELECT username FROM phpbb_users WHERE user_id='$user_id' AND user_password='$autologin_id' ") or die("erreur dans le requete sql ") ;
                         if (!mysql_num_rows($retour))
                         {
    exit("erreur dans votre identification");
                         }
                         $donnees = mysql_fetch_array($retour)
                         $pseudo = $donnees['username'];

    mysql_num_rows() retourne le nombre de ligne qui on été affectées par la requéte, donc si le pseudo n'existe pas ca sera 0, donc !mysql_num_rows($retour) sera vérfié ;) (NB: tu peut mettre le message de sortie directement dans exit() :) )

    Voilà, sinon j'ai pas trop regardé en détail mais le reste a l'air pas mal ^^
    @++

  • signaler à un administrateur
    Commentaire de iow4 le 28/10/2005 17:57:55

    merci mais symbiose j'entend par que il se logue entre eux

    il sont pas completement ensemble enfete j'ai fait sa car le systeme de session et Phpbb est trop complique
    donc sa permet d'aboutir sur une zone membre simple

  • signaler à un administrateur
    Commentaire de Anthomicro le 30/10/2005 10:29:06

    Salut,

    "Et aussi, tu peut réduire un bout de code de deux requetes SQL à une seule requéte :"

    on parle de PHPBB là, pour une parfaite symbiose faudrait une identification qui nous fasse au moins 15 requêtes ^^

  • signaler à un administrateur
    Commentaire de Anthomicro le 30/10/2005 10:32:40

    Tu es sûr de chopper tout avec cette requête :

    $reponse = mysql_query("SELECT * FROM phpbb_config WHERE config_name='cookie_name' ") ;

    ?

    ensuite évite les $HTTP_COOKIES_VARS['variable'] à remplacer par $_COOKIE['variable']

  • signaler à un administrateur
    Commentaire de powange le 06/11/2005 01:08:26

    voila un tutorial plus recent et plus simple d'utilisation..
    http://www.phpbbfrance.org/forum/viewtopic.php?t=2029

    Par contre gros chapeau pour avoir trouvé ce script.. ta du en baver, car les sessions phpbb sont un vrai foutoir

  • signaler à un administrateur
    Commentaire de iow4 le 24/10/2006 20:20:35

    Phpbb n'utilise même pas les sessions d'après ce que j'ai compris :-D

    PhpBB n'est pas le forum le plus facil a modifier

  • signaler à un administrateur
    Commentaire de iow4 le 24/10/2006 20:23:27

    A noter aussi que j'ai codé cette source il y a longtemps. Depuis j'ai evolué je prepare donc une version amélioré.

    Sans oublié que avec la derniere version de PhpBB le mot de passe contenu dans le cookie est hashé deux fois donc la technique presenté ici est obselete avec la derniere version

  • signaler à un administrateur
    Commentaire de taxidogkiller le 14/11/2006 20:28:31

    Merci beaucoup pour cette source !! si je n'étais pas tombé dessus je me préparais à codé mon propre forum !

  • signaler à un administrateur
    Commentaire de neigedhiver le 04/06/2007 11:51:03

    Salut,

    Je sais, la source est vieille, mais je viens seulement de tomber dessus, par hasard...

    Y'en a vraiment qui se cassent la tête pour pas grand chose...
    Pour utiliser les session de phpBB2 :

    <?
    define('IN_PHPBB', true);

    $phpbb_root_path = './';

    include($phpbb_root_path . 'extension.inc');

    include($phpbb_root_path . 'common.'.$phpEx);

    //

    // Start session management

    //

    $userdata = session_pagestart($user_ip, PAGE_NEWS);

    init_userprefs($userdata);

    //

    // End session management


    // Suite du code de sa page
    echo 'Bonjour ' . $userdata['username'] . ' !<br />Bienvenue dans le site à côté du forum';

    ?>

    C'est tout.
    Pour se connecter, il suffit de faire un lien vers la page login.php?redirect=url.php&param1=a&param2=b
    L'url de redirection est utilisée automatiquement après la connexion. Il suffit de remplacer le point d'interrogation (si besoin) par une esperluette et le script corrige tout seul ensuite.

    C'est pourtant pas compliqué, y'a de la doc sur ce sujet sur le site de phpBB...

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS