utiliser les sessions phpbb dans son site

Ce forum aborde toutes les questions qu'un codeur ou webmaster pourrait se poser, et n'ayant aucun rapport direct avec phpBB.
Tout ce qui peut concerner la récupération des sessions de phpBB sur votre site, doit se faire dans cette section.

Modérateur: Equipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Partager sur FacebookPartager sur TwitterPartager sur Google+

utiliser les sessions phpbb dans son site

Messagepar gregius » 31 Juil 2006 à 17:16

voilà,
j'ai pris connaissance de l'excellent document : http://forums.phpbb-fr.com/viewtopic_39 ... 0.html?hl=
à propos de l'utilisation des sessions phpp dans son site...
Egalement après avoir lu ceci : http://forums.phpbb-fr.com/viewpost_580961.html#580961

Le truc, c'est que j'aimerais que selon le groupe auxquel appartient celui qui ce log dans mon site, il ait accès à une page différente que s'il est dans un autre groupe...
Ces groupes étant défini dans le forum par l'administrateur (moi en l'occurence)

Quelqu'un pourrait-il m'aider?

Merci d'avance

Greg
gregius
Posteur néophyte
Posteur néophyte
 
Messages: 27
Enregistré le: 29 Juin 2006 à 11:46

Messagepar Ram » 31 Juil 2006 à 17:27

Ram
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 4930
Enregistré le: 21 Juil 2004 à 19:23

Messagepar and1hotsauce » 31 Juil 2006 à 17:34

Salut,

Votre sujet a été déplacé par un membre de l'équipe.

Bein tu dois récupérer le(s) groupe(s) auquel(s) appartient l' utilisateur.

L' id de l' utilisateur est donné par userdata['user_id'];

donc la requête :

Code: Tout sélectionner
$sql = "SELECT * FROM phpbb_user_group WHERE user_id = " . $userdata['user_id'];


A partir de la tu connais le groupe, tu définis ensuite la page en fonction de chaque groupe ;-)

A+, And1HotSauce ;-)
Avatar de l’utilisateur
and1hotsauce
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3517
Enregistré le: 19 Oct 2003 à 14:58
Localisation: belgique, mons

Messagepar gregius » 01 Aoû 2006 à 09:00

and1hotsauce a écrit:Salut,

<font color=green><b>Votre message a été déplacé par un modérateur.</b></font>

Bein tu dois récupérer le(s) groupe(s) auquel(s) appartient l' utilisateur.

L' id de l' utilisateur est donné par userdata['user_id'];

donc la requête :

Code: Tout sélectionner
$sql = "SELECT * FROM phpbb_user_group WHERE user_id = " . $userdata['user_id'];


A partir de la tu connais le groupe, tu définis ensuite la page en fonction de chaque groupe ;-)

A+, And1HotSauce ;-)



Merci, mais c'est justement la dernière partie que j'ai du mal à faire...
Etant vraiment nul en php...
par contre le sql et la logique ça va mais bon...
gregius
Posteur néophyte
Posteur néophyte
 
Messages: 27
Enregistré le: 29 Juin 2006 à 11:46

Messagepar gregius » 02 Aoû 2006 à 10:46

Hello,

Voici quelques précisions
J'utilise des pages dynamiques (index.php?id_page=1...) C'est à dire que ma page est composée de 4 parties : header, menu, contenu, footer et que les liens sont gérés dynamiquement..
Code: Tout sélectionner
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
 include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.' .$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_SITE);
init_userprefs($userdata);
 //
// End session management
 //
?>

Je me suis donc dit qu'il fallait mettre le code d'activation de session dans l'index.php... ça n'a pas posé de problème.

Est-ce que je dois mettre ce code dans toutes mes pages contenu?

Deuxième question.
J'aimerai que le formulaire de login donne l'accès à une page du site un peu comme le fait htaccess.
dans le code suivant

Code: Tout sélectionner
<?php
if ( $userdata['session_logged_in'] != '1')
{
  print('<form method="post" action="' . $phpbb_root_path. 'login.php" >
  Pseudo : <input type="text" name="username" />
  Mot de passe : <input type="password" name="password" />
  Connexion automatique : <input type="checkbox" name="autologin" />
  <input type="hidden" name="redirect" value="..' . $HTTP_SERVER_VARS['REQUEST_URI'] . '" />
  <input type="hidden" name="ext" value="1" /> 
  <input type="submit" name="login" value="Connexion" /> 
  </form>');
}
?>


Je ne vous pas où l'on peut rediriger l'utilisateur après qu'il ait rentré son code...
De plus j'aimerai que la page auxquel accède l'utilisateur soit différente selon le groupe auxquel il appartient...
Est-ce possible?

Merci de me donner du code comme réponse ou un exemple... je suis encore assez nul en php pour l'instant...
:D
gregius
Posteur néophyte
Posteur néophyte
 
Messages: 27
Enregistré le: 29 Juin 2006 à 11:46

Messagepar Vlad Tepesch » 02 Aoû 2006 à 10:54

Le code d'activation de session ne doit être mis qu'une fois par page (en sachant qu'une page peut être fais de plusieurs fichiers).

Dans index.php, ça m'a l'air parfait ;)

Ensuite, pour la redirection, c'est cette ligne du formulaire qui la gère :

Code: Tout sélectionner
  <input type="hidden" name="redirect" value="..' . $HTTP_SERVER_VARS['REQUEST_URI'] . '" /> 


Tu met dedans la page où il faut renvoyer après la connexion.

en sachant que "..' . $HTTP_SERVER_VARS['REQUEST_URI'] signifie : remonte d'un répertoire puis met l'adresse qui a demandé la page, en sachant que si ton site est de la forme http://www.monsite/toto/page.php, REQUEST URI sera /toto/page.php
Avatar de l’utilisateur
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3420
Enregistré le: 04 Juil 2005 à 17:23
Localisation: Paris

Messagepar Elglobo » 02 Aoû 2006 à 10:56

gregius a écrit:J'utilise des pages dynamiques (index.php?id_page=1...)

Je ne sais pas comment tu t'organises et ne connait pas le code dans sa totalité, mais au vu de cette URL, je te conseille de faire attention à ce type d'include qui peut être une faille de sécurité assez importante pour ton site Web.
Le header et footer peuvent être géreés dynamiquement mais il est dangereux de jouer sur une page à contenu dynamique, enfin aprés tout dépend comment tu le gères et si tu es sûr de ton code.

@+ :wink:
Modifié en dernier par Elglobo le 02 Aoû 2006 à 10:58, modifié 1 fois.
phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Avatar de l’utilisateur
Elglobo
Floodeur universel
Floodeur universel
 
Messages: 14943
Enregistré le: 13 Oct 2004 à 17:28

Messagepar gregius » 02 Aoû 2006 à 10:57

Elglobo a écrit:
gregius a écrit:J'utilise des pages dynamiques (index.php?id_page=1...)

Je ne sais pas comment tu t'organises et ne connait pas le code dans sa totalité, mais au vu de cette URL, je te conseille de faire attention à ce type d'include qui peut être une faille de sécurité assez importante pour ton site Web.

@+ :wink:

que faut-il faire pour sécuriser la chose?
Je me suis basé sur le tutoriel proposé sur developpez.com
gregius
Posteur néophyte
Posteur néophyte
 
Messages: 27
Enregistré le: 29 Juin 2006 à 11:46

Messagepar Vlad Tepesch » 02 Aoû 2006 à 11:02

Règle numéro 1 : typage des variables utilisateurs.

Si tu sais que tu va recevoir un chiffre, intval est ton ami.

D'où :

$id_page = intval($_GET['id_page']);
Avatar de l’utilisateur
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3420
Enregistré le: 04 Juil 2005 à 17:23
Localisation: Paris

Messagepar gregius » 02 Aoû 2006 à 11:07

Vlad Tepesch a écrit:Règle numéro 1 : typage des variables utilisateurs.

Si tu sais que tu va recevoir un chiffre, intval est ton ami.

D'où :

$id_page = intval($_GET['id_page']);


J'comprends rien... je dois changer mes liens.?
tu peux pas me donner un exem^ple?
gregius
Posteur néophyte
Posteur néophyte
 
Messages: 27
Enregistré le: 29 Juin 2006 à 11:46

Re

Messagepar Elglobo » 02 Aoû 2006 à 11:09

En fait je ne connais pas ton code, mais pour te donner un exemple simple sur ce que j'essaye de t'expliquer, il y a en gros deux manières de gérer.

1er cas :
Soit une page contact.php ainsi :
Code: Tout sélectionner
<?php include("haut.php"); ?>

<p>Voici mon adresse de contact : toto@toto.fr</p>

<?php include("bas.php"); ?>

haut.php et bas.php correspondant au header et footer.

2 ème cas :
Soit une page index.php
Code: Tout sélectionner
<html>
    <body>
    <?php
    $page = $_GET['page'];
    include("$page.php");
    ?> 
    </body>
</html>

Donc tu appel via l'URL http://tonsite.com/index.php?page=contact
Ce qui aura pour effet d'appeler la page contact.php

Cette solution est beaucoup plus rapide à mettre en oeuvre pour la totalité d'un site certes mais dangereuse.

Imaginons que quelqu'un tape http://tonsite.com/index.php?page=http: ... script.php
En tapant cela ton serveur ira éxécuter le code php de mon script distant, et je pourrais obtenir dans l'absolu ce que je veux de ton site.

Aprés il y a des moyen de sécuriser ces includes, en faisant ainsi :
Code: Tout sélectionner
<html>
    <body>
    <?php
    if ($_GET['page'] == "contact")
    {
        include("contact.php");
    }
   
   if ($_GET['page'] == "forum")
    {
        include("forum.php");
    }
    ?> 
    </body>
</html>

Si quelqu'un essaie de changer l'url, aucun des if ne sera valable donc rien ne sera inclus, et cela te sécurise un minimum, tu peux aussi utiliser la solution de Vlad.

Maintenant à toi de voir comment tu gères cela dans tes scripts :wink:
phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Avatar de l’utilisateur
Elglobo
Floodeur universel
Floodeur universel
 
Messages: 14943
Enregistré le: 13 Oct 2004 à 17:28

Messagepar Vlad Tepesch » 02 Aoû 2006 à 11:15

Un exemple?

Imaginons que tu as une page (ou n'importe quoi d'autre d'ailleurs) qui est appellé ainsi :

index.php?ma_var=1

si l'utilisateur tape index.php?ma_var=code_pour_pirater

tu risque d'avoir un souci suivant la façon dont ton site est fait.

$ma_var = intval($_GET['ma_var']);

Par contre, avec le intval comme je te l'ai marqué, si c'est un chiffre, intval remplira la variable $ma_var avec le chfifre, ou rien si un caractère illégal est détecté (en sachant qu'une lettre est illégal). Donc, tu es sur d'avoir un chiffre dans $ma_var, et tu l'utilise dans le script au lieu de $_GET['ma_var'];

C'est une sécurité qui empêche surtout les injections SQL comme j'en ai vu parfois :)
Avatar de l’utilisateur
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3420
Enregistré le: 04 Juil 2005 à 17:23
Localisation: Paris

Messagepar gregius » 02 Aoû 2006 à 11:46

En fait,
Je me suis donc basé sur le tutoriel : http://pbnaigeon.developpez.com/tutorie ... dynamique/

Et j'espère que si ce tutoriel se trouve sur ce site, c'est qu'il est bon...
l'appel des pages va chercher sur dans une base de donnée grâce à la fonction suivante :
Code: Tout sélectionner
// Récupère les informations de la page concernée
function extraction_infos_DB() {
	$strSQL = 'SELECT * FROM `pages` WHERE `Id_page` = '.$_ENV['id_page'];
	$resultat = requete_SQL($strSQL);
	$tabl_result = mysql_fetch_array($resultat);
	$_ENV['mots_cles'] = $tabl_result['Mots_cles'];
	$_ENV['description'] = $tabl_result['Description'];
	$_ENV['titre'] = $tabl_result['Titre'];
	$_ENV['contenu'] = $tabl_result['Contenu'];
	$_ENV['id_parent'] = $tabl_result['Id_parent'];
}


Vous croyez que ça reste dangereux?
gregius
Posteur néophyte
Posteur néophyte
 
Messages: 27
Enregistré le: 29 Juin 2006 à 11:46

Re

Messagepar Elglobo » 02 Aoû 2006 à 12:03

Et comment est géré l'appel de la fonction extraction_infos_DB au niveau d''index.php ?
phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Avatar de l’utilisateur
Elglobo
Floodeur universel
Floodeur universel
 
Messages: 14943
Enregistré le: 13 Oct 2004 à 17:28

Re: Re

Messagepar gregius » 02 Aoû 2006 à 12:06

Elglobo a écrit:Et comment est géré l'appel de la fonction extraction_infos_DB au niveau d''index.php ?


Code: Tout sélectionner
<?php
	// Active tout les warning. Utile en phase de développement
	// En phase de production, remplacer E_ALL par 0
	error_reporting(E_ALL);
	
	// Inclus le fichier contenant les fonctions personalisées
	include_once 'mes_fonctions.php';
	
	// Fonction de connexion à la base de données
	connexion_DB('gregneubourg');
	
	// Définit l'Id de la page d'accueil (1 dans cet exemple)
	// Pensez à le modifier si ce n'est pas le cas chez vous.
	$id_page_accueil = 1;
	
	// Récupère l'id de la page courante passée par l'URL
	// Si non défini, on considère que la page est la page d'accueil
	if (isset($_GET['id_page'])) {
		$_ENV['id_page'] = intval($_GET['id_page']);
	} else {
		$_ENV['id_page'] = $id_page_accueil;
	}
	
	// Extrait les informations correspondantes à la page en cours de la DB
	extraction_infos_DB();
?>



AAAH ben oui, il y a le intval... donc j'suis protégé... oufff

mais bon ça nous a éloigné de ma demande initiale :

Deuxième question.
J'aimerai que le formulaire de login donne l'accès à une page du site un peu comme le fait htaccess.
dans le code suivant

Code:

<?php
if ( $userdata['session_logged_in'] != '1')
{
print('<form method="post" action="' . $phpbb_root_path. 'login.php" >
Pseudo : <input type="text" name="username" />
Mot de passe : <input type="password" name="password" />
Connexion automatique : <input type="checkbox" name="autologin" />
<input type="hidden" name="redirect" value="..' . $HTTP_SERVER_VARS['REQUEST_URI'] . '" />
<input type="hidden" name="ext" value="1" />
<input type="submit" name="login" value="Connexion" />
</form>');
}
?>


Je ne vous pas où l'on peut rediriger l'utilisateur après qu'il ait rentré son code...
De plus j'aimerai que la page auxquel accède l'utilisateur soit différente selon le groupe auxquel il appartient...
Est-ce possible?
Modifié en dernier par gregius le 02 Aoû 2006 à 12:11, modifié 2 fois.
gregius
Posteur néophyte
Posteur néophyte
 
Messages: 27
Enregistré le: 29 Juin 2006 à 11:46

Suivante

Retourner vers Coding, Webmastering et Sécurité informatique

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Bing [Bot], Yahoo [Bot] et 1 invité

cron