[REGLE] sessions phpBB3 et formulaire sur 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

[REGLE] sessions phpBB3 et formulaire sur son site

Messagepar Rico the Hobbit » 08 Sep 2013 à 10:39

Skouat a écrit:Bonjour,

s'il est question de $_GET et $_POST, alors ceci ne concerne plus directement les sessions phpBB.
Merci d'ouvrir un nouveau sujet pour les interrogations concernant les formulaires.
Ensuite pour avoir une réponse un peu plus précise, je dirais qu'un bout de code serait toujours interressant.

J'ai du mal à comprendre si c'est l'adapation des $_GET en request_var() qui est à expliqué ou si c'est autre chose.

A suivre...


Bonjour à vous,

Je tiens tout d'abord à vous remercier pour l'excellente documentation en particulier celle-ci : [Doc] Utiliser les sessions de phpBB3. Depuis un moment, mon site web tournait autour du forum mais je n'avais pas les éléments techniques pour utiliser les identifiants du forum pour le reste du site. C'est maintenant chose faite. Les utilisateurs peuvent se connecter directement sur le site sans passer par le forum et peuvent naviguer dans les différentes sections sans déconnexion. J'ai suivi les étapes et ça marche en particulier le script de base, la création d'un formulaire de connexion et les liens hypertexte

J'utilise de nombreux formulaires essentiellement en POST mais quelques uns en GET. Lorsque je lance le formulaire (submit), je perds alors la connexion à ma session. Comment faire pour inclure au formulaire les données de l'utilisateur et que le script de base puisse récupérer mon identifiant. Les formulaires ne sont utilisés que par les personnes qui ont un identifiant PHPBB3.

Un exemple :
Code: Tout sélectionner
<?php
//Insertion du script de base pour la session du forum phpbb3
include ("compte.php");
//Insertion de l'entête du site
include ("../../haut.php");
?>
<title>Formulaire Auteur</title>
</head>
<body>
<?php
//si l'id de l'utilisateur est l'administrateur, alors :
if ($id == 2)
	{
		//connexion à la base de donnée
		include ("../../commun/connexion.php");
		?>
		<section class="texte">
		<article>
		<h1>
		Formulaire d'insertion d'un auteur
		</h1>
		<form action="auteur.php" method="post">
		<p>
		<label>Nom de l'auteur</label>
		<input type="text" name="nomauteur"/>
		<label>Pr&eacute;nom de l'auteur</label>
		<input type="text" name="prenomauteur"/>
		<label>Pays d'origine</label>
		<?PHP
		echo "<select name=\"pays\"/>";
		$req = mysql_query ("SELECT * FROM bdd_pays ORDER BY nom_pays");
		while ($result=mysql_fetch_array($req))
		{
			echo "<option name=\"pays\" value=".$result['id_pays'].">".$result['nom_pays']."</option>";
		}
		echo "</select>";
		?>
		<input type="submit" value="Ajouter"/>
		</p>
		</form>
		<?php
		//*********************************
		//*********************************
		//Insertion des données pour un éditeur
		//*********************************
		//*********************************
		$nom=$_POST['nomauteur'];
		$prenom=$_POST['prenomauteur'];
		$date=$_POST['date'];
		$pays=$_POST['pays'];
		if ($nom==TRUE)
			{
				mysql_query ("INSERT INTO bdd_auteur (nom_auteur, prenom_auteur, date_auteur, id_pays) VALUES('$nom', '$prenom', '$date', '$pays')");
			}
		else
			{
				echo '<font color="red">Attention, vous devez remplir au moins le champ suivant : Nom auteur !</font><br/><br/>';
			}
	}
//Si la personne n'est pas connecté ou n'est pas l'id de l'administrateur, il est renvoyé à l'accueil du site
else
	{
		include ("../../retour.php");
	}
Modifié en dernier par Rico the Hobbit le 28 Sep 2014 à 14:49, modifié 1 fois.
Bonjour chez vous
Rico the Hobbit
Posteur néophyte
Posteur néophyte
 
Messages: 40
Enregistré le: 27 Mai 2003 à 13:33
Localisation: Cul-de-sac

Re: sessions phpBB3 et formulaire sur son site

Messagepar Skouat » 08 Sep 2013 à 18:37

Bonjour,

J'ai du mal à comprendre un point.
Si "compte.php" est le script de base pour la session phpBB, alors pourquoi tu utilises plus bas "/commun/connexion.php" ?
La session phpBB initie déjà la connexion à la base de données.
_______________________________
Ensuite tu as tous les $_POST à remplacer par request_var()
Ex :
    $nom=$_POST['nomauteur']; doit devenir $nom = request_var('nomauteur', '');
_______________________________
Ensuite pour ce qui est du controle de l'administrateur. tu peux éventuellement lire cette doc => documentation-phpbb3/sujet165929.html
_______________________________
Pour la requête SQL suivante
Code: Tout sélectionner
      echo "<select name=\"pays\"/>";
      $req = mysql_query ("SELECT * FROM bdd_pays ORDER BY nom_pays");
      while ($result=mysql_fetch_array($req))
      {
         echo "<option name=\"pays\" value=".$result['id_pays'].">".$result['nom_pays']."</option>";
      } 

Avec phpBB, pour délimiter une change de caratère, il est demandé d'utiliser, dans la mesure du possible, ' au lieu de "
Pour le traitement du SQL, il faut utiliser la class $db

Code: Tout sélectionner
        echo '<select name="pays"/>';
        $sql = 'SELECT * FROM bdd_pays ORDER BY nom_pays';
        $result = $db->sql_query($sql);
        while ($row = $db->sql_fetchrow($result))
        {
            echo '<option name="pays" value=' . $row['id_pays'] . '>' . $row['nom_pays'] . </option>;
        } 

______________________________
idem que ci-dessus pour la requête SQL mysql_query ("INSERT INTO...
Skouat
Traducteur
Traducteur
 
Messages: 13970
Enregistré le: 02 Avr 2008 à 20:47

Re: sessions phpBB3 et formulaire sur son site

Messagepar Rico the Hobbit » 08 Sep 2013 à 19:09

Merci Skouat pour ta réponse.

La différence entre "compte.php" et "connexion.php" est que j'utilise plusieurs bases de donnée : une base est utilisée pour le forum (connexion via compte.php) et ensuite plusieurs bases en fonction des données, en l’occurrence ici (connexion.php). Il y a peut-être un élément que je n'avais fourni, les données du formulaire ne vont pas dans la base de donnée du forum mais dans plusieurs bases de donnée indépendantes.

Avec phpBB, pour délimiter une change de caratère, il est demandé d'utiliser, dans la mesure du possible, ' au lieu de "
. Oui, en effet, j'ai découvert ce protocole récemment. Les codes les plus récents utilisent ' au lieu de ". Malheureusement, les anciens formulaires comme cet exemple sont à modifier.

Merci pour l'info concernant l'interdiction d'accès aux pages, je vais travailler dessus.
Bonjour chez vous
Rico the Hobbit
Posteur néophyte
Posteur néophyte
 
Messages: 40
Enregistré le: 27 Mai 2003 à 13:33
Localisation: Cul-de-sac

Re: sessions phpBB3 et formulaire sur son site

Messagepar Skouat » 08 Sep 2013 à 19:17

Question bête,

Mais y a-t'il un réel intéret d'avoir plusieurs base de données ?
Rien n'empêche de n'avoir qu'une seule base et plusieurs tables. il suffit, s'il y a nécessité de les distinguer, de rajouter un préfixe.
Skouat
Traducteur
Traducteur
 
Messages: 13970
Enregistré le: 02 Avr 2008 à 20:47

Re: sessions phpBB3 et formulaire sur son site

Messagepar Rico the Hobbit » 08 Sep 2013 à 19:25

Une question me reste à l'esprit. Dans mon formulaire, je n'ai aucun élément concernant l'identifiant de l'utilisateur. En validant le formulaire, le fait de remplacer $_POST par request_var() va permettre de garder la connexion ?

Le fait d'avoir plusieurs bases de donnée me permet de me repérer plus rapidement. En effet, je dois avoir 8 bases de donnée avec une 20 aine de tables dans chaque. Avec une base de donnée unique, il est plus difficile de se repérer malgré l'utilisation de préfixe.
Bonjour chez vous
Rico the Hobbit
Posteur néophyte
Posteur néophyte
 
Messages: 40
Enregistré le: 27 Mai 2003 à 13:33
Localisation: Cul-de-sac

Re: sessions phpBB3 et formulaire sur son site

Messagepar Skouat » 08 Sep 2013 à 20:06

Rico the Hobbit a écrit:je n'ai aucun élément concernant l'identifiant de l'utilisateur

Si tu as ouvert une session phpBB, tu as obligatoirement l'information via la class $user
Ex : $user->data['user_id'] permet d'obtenir l'id du membre.

Rico the Hobbit a écrit:$_POST par request_var() va permettre de garder la connexion ?

euh... a moins que je dise une super connerie (et c'est possible), $_POST n'a jamais eût pour action de maintenir une connexion.
request_var() fait la meme chose, mais de manière plus sécurisée.
Si tu as un problèmatique de perte de session regarde plutot du coté du fichier "auteur.php", vu que c'est vers lui que ton formulaire redirige.
Rico the Hobbit a écrit:En effet, je dois avoir 8 bases de donnée avec une 20 aine de tables dans chaque. Avec une base de donnée unique, il est plus difficile de se repérer malgré l'utilisation de préfixe.

Que tu ais 20 bases ou une seule si c'est juste pour une histoire de praticité visuel, il n'y a pas d'interet à avoir plusieurs bases.

L'interet de faire plusieurs base c'est si tu as deux CMS/applications bien distincts et que l'un peut fonctionner sans l'autre, meme s'il peut y avoir un lien entre les deux produits.
Je pense par exemple à deux produits web tel que OCS Inventory et GLPI.
Les deux produits sont 100% indépendants, mais il est possible de les lier. Là il y a un interet à avoir deux bases car les deux produits peuvent ne pas utiliser les memes standards de BDD et évoluent à leur rytme.

Dans ton cas, si ce n'est que visuel, l'interet s'en voit réduit à pas grand chose. Je dirais même que tu peux rendre encore plus complexe certaines actions de développement.
Par exemple, il ne t'es pas possible d'utiliser les exemple de ré-écriture de requête SQL que j'ai mentionné plus haut vu que tu utilises une autre BDD.
Sans compter le fait que tu vas ouvrir autant de connexion que nécessaire à XXX BDD.

A voir ce qu'en pensent les autres.

A+
Skouat
Traducteur
Traducteur
 
Messages: 13970
Enregistré le: 02 Avr 2008 à 20:47

Re: sessions phpBB3 et formulaire sur son site

Messagepar Rico the Hobbit » 08 Sep 2013 à 23:45

Merci pour tes précisions. Mon souci se situe au niveau de la gestion de la validation du formulaire. Lorsque je clique sur "valider", il prend en compte les éléments du formulaire mais je me retrouve déconnecté. Qu'est-ce qu'il faut que je mette dans mon formulaire pour rester connecter ?
J'ai simplifié mon formulaire pour tenter essayer de trouver une réponse au problème principal. J'ai pris note des autres éléments qui ne vont pas et je vais y travailler plus tard.
Voici une version simplifiée du fichier "auteur.php". "compte.php" reprend le script de base de connexion et "haut.php" correspond aux premiers éléments d'une page web classique.
Code: Tout sélectionner
<?php
include ("compte.php");
include ("../../haut.php");
?>
<title>Formulaire Auteur</title>
</head>
<body>
<?php
if ($id == 2)
	{
		?>
		<h1>
		Formulaire d'insertion d'un auteur
		</h1>
		<form action="auteur.php" method="post">
		<p>
		<label>Nom de l'auteur<br/>
		<input type="text" name="nomauteur"/></label><br/><br/>
		<label>Pr&eacute;nom de l'auteur<br/>
		<input type="text" name="prenomauteur"/></label><br/><br/>
		<label>Ann&eacute;e de naissance<br/>
		<input type="text" name="date"/></label><br/><br/>
		<label>Image<br/>
		<input type="text" name="image"/></label><br/><br/>
		<input type="submit" value="Ajouter"/>
		</p>
		</form>
		<?php
		//*********************************
		//Insertion des données pour un éditeur
		//*********************************
		$nom = request_var('nomauteur', '');
		$prenom = request_var('prenomauteur', '');
		$date = request_var('date', '');
		$image = request_var('image', '');
		if ($nom==TRUE)
			{
				mysql_query ("INSERT INTO bdd_auteur (nom_auteur, prenom_auteur, date_auteur, image_auteur) VALUES('$nom', '$prenom', '$date', '$image')")";
			}
		else
			{
				echo '<font color="red">Attention, vous devez remplir au moins le champ suivant : Nom auteur !</font><br/><br/>';
			}
	}
Bonjour chez vous
Rico the Hobbit
Posteur néophyte
Posteur néophyte
 
Messages: 40
Enregistré le: 27 Mai 2003 à 13:33
Localisation: Cul-de-sac

Re: sessions phpBB3 et formulaire sur son site

Messagepar Skouat » 09 Sep 2013 à 00:09

En résumé tu perds la session car quand tu rediriges sur auteur.php tu ne rajoute pas l'id de session dans l'url.
Donc tu peux relire la doc que tu cites dans ton 1er message.
Et histoire de trouver facilement, recherche ne perdez pas la session!
Profites-en aussi pour lire ce qui suivra Sécuriser les retours de variables

A+
Skouat
Traducteur
Traducteur
 
Messages: 13970
Enregistré le: 02 Avr 2008 à 20:47

Re: sessions phpBB3 et formulaire sur son site

Messagepar Rico the Hobbit » 09 Sep 2013 à 20:37

Oui, en effet, les éléments deviennent plus clairs.
Est-ce que ceci serait plus adapté ?
Code: Tout sélectionner
<h1>
Formulaire d'insertion d'un auteur
</h1>
<?php
echo '<form action="' . append_sid('auteur.php') . '" method="post">';
?>
<p>
<label>Nom de l'auteur<br/>
<input type="text" name="nomauteur"/></label><br/><br/>
<label>Pr&eacute;nom de l'auteur<br/>
<input type="text" name="prenomauteur"/></label><br/><br/>
<label>Ann&eacute;e de naissance<br/>
<label>Image<br/>
<input type="text" name="image"/></label><br/><br/>
<input type="submit" value="Ajouter"/>
</p>
</form>
<?php
$nom = request_var('nomauteur', '');
$prenom = request_var('prenomauteur', '');
$date = request_var('date', '');
$image = request_var('image', '');
if ($nom==TRUE)
	{
		mysql_query ("INSERT INTO bdd_auteur (nom_auteur, prenom_auteur, date_auteur, id_pays, image_auteur) VALUES('$nom', '$prenom', '$date', '$pays', '$image')");
}
Bonjour chez vous
Rico the Hobbit
Posteur néophyte
Posteur néophyte
 
Messages: 40
Enregistré le: 27 Mai 2003 à 13:33
Localisation: Cul-de-sac

Re: sessions phpBB3 et formulaire sur son site

Messagepar Skouat » 09 Sep 2013 à 20:40

Normalement ça devrait corriger ton problème.
A tester ;)
Skouat
Traducteur
Traducteur
 
Messages: 13970
Enregistré le: 02 Avr 2008 à 20:47

Re: sessions phpBB3 et formulaire sur son site

Messagepar Rico the Hobbit » 10 Sep 2013 à 20:52

Yes, ça marche, je teste un certain nombre d'éléments afin de vérifier que tout fonctionne et je découvre que j'ai du mal à m'en sortir avec une fonction que je viens, tout juste, de découvrir : l'upload de fichiers via le formulaire.
Je pense qu'il faut que je change les codes mis en place. Faudrait-il que je remplace $image = $_FILES['image']['name'] par quelque chose de cet ordre : $mavar = request_var('ma_var', 0 ); ??
Code: Tout sélectionner
//*********************************
//*********************************
//Vérification de l'image
//*********************************
//*********************************
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
//1. strrchr renvoie l'extension avec le point (« . »).
//2. substr(chaine,1) ignore le premier caractère de chaine.
//3. strtolower met l'extension en minuscules.
$image = $_FILES['image']['name'];
$extension_upload = strtolower(  substr(  strrchr($_FILES['image']['name'], '.')  ,1)  );
$chemin = 'images/editeur/'.$image.'';
echo '<p>'.$chemin.'</p>';
$resultat = move_uploaded_file($_FILES['image']['tmp_name'],$chemin);
if ($resultat)
	{
		echo '<p>'.$chemin.'</p>';
		echo "Transfert réussi";
	}
Bonjour chez vous
Rico the Hobbit
Posteur néophyte
Posteur néophyte
 
Messages: 40
Enregistré le: 27 Mai 2003 à 13:33
Localisation: Cul-de-sac

Re: sessions phpBB3 et formulaire sur son site

Messagepar Zoddo » 10 Sep 2013 à 22:17

Je croit pas que request_var supporte les fichiers. Faut essayez de voir comment fait phpBB pour l'envoie de fichier (essaie de regarder au niveau du changement d'avatar par exemple).

HS : Ton avatar est mort.
[Doc] Installer une extension - [Extension] Post Models - [Recrutement] Équipe des Extensions
Si vous considérez votre requête comme résolue, merci d'ajouter l'attribut de sujet [Réglé]
Zoddo
Equipe site
Equipe site
 
Messages: 7034
Enregistré le: 16 Mar 2011 à 18:44
Localisation: Laval / Le Mans

Re: sessions phpBB3 et formulaire sur son site

Messagepar Rico the Hobbit » 10 Sep 2013 à 23:05

Ok, merci Zoddo. Je cherche mais j'avoue avoir du mal à m'y retrouver dans les programmes phpBB... Je vais prospecter mais si vous avez des suggestions, je suis preneur !!
Bonjour chez vous
Rico the Hobbit
Posteur néophyte
Posteur néophyte
 
Messages: 40
Enregistré le: 27 Mai 2003 à 13:33
Localisation: Cul-de-sac

Re: sessions phpBB3 et formulaire sur son site

Messagepar Rico the Hobbit » 10 Sep 2013 à 23:47

Une autre question, si je ne suis pas connecté, je suis redirigé vers la page principale du forum. Si je souhaite un positionnement sur une autre page, par l'index.php principal du site, j'imagine qu'il faut que je change ce code :
Code: Tout sélectionner
redirect(append_sid($phpbb_root_path . "auteur." . $phpEx));

Comment, je remplace $phpbb_root_path par une autre direction ?
Bonjour chez vous
Rico the Hobbit
Posteur néophyte
Posteur néophyte
 
Messages: 40
Enregistré le: 27 Mai 2003 à 13:33
Localisation: Cul-de-sac

Re: sessions phpBB3 et formulaire sur son site

Messagepar Steph » 11 Sep 2013 à 01:15

  • par Rico the Hobbit » 10 Sep 2013 à 23:05
  • par Rico the Hobbit » 10 Sep 2013 à 23:47


Salut Rico the Hobbit,

Le fait de poster deux messages à la suite, sans réponse d'un autre membre entre deux, dans un délai de moins de 24 heures est considéré comme un UP sur phpBB-fr.

De ce fait, si tu ne souhaites pas que ton topic soit verrouillé je te prie de respecter les règles qui interdisent les UP en moins de 24 heures.

Ton complément d'information était à ajouter à ton précédent message grâce au bouton EDITER.

@+ ;)
Avatar de l’utilisateur
Steph
Administrateur
Administrateur
 
Messages: 18831
Enregistré le: 29 Déc 2008 à 16:48
Localisation: Alsace / Bas-Rhin / France

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 : Aucun utilisateur enregistré et 1 invité

cron