begin process at 2012 02 12 09:37:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > ZONE MEMBRE EN SYMBIOSE AVEC LE FORUM PHPBB

ZONE MEMBRE EN SYMBIOSE AVEC LE FORUM PHPBB


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :15 983

Auteur : iow4

Ecrire un message privé
Site perso
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

 Sources du même auteur

OUTIL DE SUPRESSION DE SPAM INTEGRÉ À PHPBB
PGCD : ALGORITHME D'EUCLIDE PAR RECURSIVITÉ

 Sources de la même categorie

Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC ... par cod57
SYSTÈME DE PAGINATION AVEC BDD ET IMAGES (FICHIERS) par begueradj

 Sources en rapport avec celle ci

Source avec Zip ESPACE MEMBRE BASIQUE par bonhommecrea
Source avec Zip ESPACE MEMBRE V2 par nicomilville
Source avec Zip ESPACE MEMBRE AVEC MESSAGERIE V3 par guisx00
Source avec Zip ESPACE MEMBRE AVEC MESSAGERIE V2.1 par guisx00
Source avec Zip LOGIN PHPBB par CraMiX

Commentaires et avis

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

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

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 ^^
@++

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

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 ^^

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']

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

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

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

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 !

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales