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 : 12 897

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
 

Historique

29 avril 2006 18:09:12 :
Changement de catégorie

Commentaires et avis

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 dans le forum

Espace membre avec PHPBB [ par cddvdcopy ] Bonjour a tous Je suis d&#233;butant et sur mon site, j'ai un forum phpBB. J'aimerai savoir comment faire pour que seul les inscrits dans mon forum pu utiliser les sessions phpbb à travers son site [ par direk2 ] Bonjour &#224; tous les webmasters, Voila mon probl&#232;me: Je suis en train de cr&#233;er un site (h&#233;b&#233;rg&#233; chez free) et j'essaye de Espace membre et forum [ par overbrave ] BOuhouhou Chuis trop une merdeJe cherche depuis un sacr&#233; bous de temps quel script utiliser pour realiser une zone membre qui fonctionne ...Je ch PHPBB et ESPACE MEMBRE [ par milkasoprano ] Bonjour j'ai une petite question d'ordre g&#233;n&#233;ral J'aurai souhaitai savoir si il est possible de creer un espace membre avec gestion de news prob d'inscription pour un espace membre [ par bricethenetman ] Slt j''avé créer un petit script trés basic pour inscrir les membres de mon site(Insert into... ) à présent je l'ai modifier pour ke si un pseudo exi espace membre + upload + base mysql [ par jipe32 ] Bonjour, connaissez vous un espace membre qui creer un répertoire perso sur le serveur à chaque inscription. De plus connaissez-vous un script upload phpBB [ par R3dDragon ] Bonjour,Donc voilà, j'ai trouvé cette source:http://www.phpcs.com/codes/INFOS-MEMBRE-VOTRE-FORUM-PHPBB2-CONNECTE-DEPUIS-AUTRES_22921.aspxElle permet d Utiliser les sessions du forum PHPBB ou créer une zone membre ?? [ par gooooo ] Bonjour,J'ai un petit problème avec des codes php, c'est pour cela que je vient checher de l'aide sur votre site qui est énorme.Je ne suis pas du tout Adapter espace membre phpbb à ma page [ par elt93 ] Bonjour,Je suis entrain de créer un espace membre et ju'ai trouvé un code qui permet de partager la base de phpbb comme base d'espace membre, voici le Porbleme sur la création d un espace membre [ par rasengan89 ] Bonjour à tous,Je suis actuellement entrain de créer un espace membre mais il se pose un petit probleme.Voila quand je veux afficher les informations


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 4,602 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.