Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1612 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Un formulaire en plusieurs pages

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Un formulaire en plusieurs pages

n°1786063
cimourdain
Posté le 12-09-2008 à 13:59:06  profilanswer
 

Bonjour à tous,
 
Je souhaite faire un formulaire en plusieurs pages correspondantes à différentes étapes. Grosso modo, à chaque étape on fait un enregistrement dans une base et ces enregistrements sont reliés entres eux par des clés primaires/étrangères.
On m'a dit qu'il y avait des techniques classiques pour aborder ce genre de problème mais je n'ai rien trouvé de convainquant sur le net.
 
Ce qui me pose soucis c'est surtout la sécurité. Imaginez que dans la premiere partie on remplisse un auteur et dans l'autre un article. Il faudra transmettre l'id de l'auteur. Or même s'il est en hidden il est facile de le changer avant le POST du deuxième formulaire (formulaire de l'article) et ainsi faire croire qu'un article donné est associé à un autre auteur. L'auteur n'est pas l'utilisateur du formulaire, j'ai pris l'exemple classique auteur/article donc il ne s'agit pas d'un problème d'authentification de l'utilisateur.

mood
Publicité
Posté le 12-09-2008 à 13:59:06  profilanswer
 

n°1786070
flo850
moi je
Posté le 12-09-2008 à 14:03:00  profilanswer
 

l'id de l'auteur devrait etre stocké en session

n°1786101
omega2
Posté le 12-09-2008 à 14:51:41  profilanswer
 

A noter que par sécurité, il est préférable de lié, dans la session, l'id de l'auteur à un code qui sera mis dans un champ hidden du formulaire.
Ca évitera tout problème si un utilisateur à la mauvaise idée de commencer une nouvelle saisie avant d'avoir finis la première et qu'il se décide ensuite à compléter sa première saisie.

n°1786104
grosbin
OR die;
Posté le 12-09-2008 à 14:59:23  profilanswer
 

si l'user n'a pas de cookies, je recommande d'enregistrer tous les champs précedent dans un hidden :)


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1786106
flo850
moi je
Posté le 12-09-2008 à 15:01:37  profilanswer
 

non
les donénes critiques ( qui est l'auteur par exemple ) ne doivent pas etre modifiables par l'auteur

n°1786108
cimourdain
Posté le 12-09-2008 à 15:04:39  profilanswer
 

Dans la session de l'utilisateur je stocke son id (clé primaire de la table des utilisateurs).
 
Je me suis peut être mal exprimé, je reprends:
 
Imaginez qu'un utilisateur crée une nouvelle fiche auteur dans la première étape. Ensuite dans la deuxième étape, il doit crée un article censé être en relation avec cet auteur, donc on pourrait penser qu'il suffit de mettre l'id de l'auteur qui vient d'être crée en hidden dans ce nouveau formulaire. Mais il est alors facile pour l'utilisateur de changer cet id en sorte de lier l'article qui va écrire à un auteur qu'il n'a pas crée !
 
est-ce plus clair ?
 
EDIT: ce que j'appelle auteur n'est pas l'utilisateur ! Un utilisateur peut créer des fiches "auteur" et attacher des "article" à ces auteurs. Mais je veux que les articles attachés le soient sur l'auteur qui a été crée dans l'étape précédente et aucun autre.


Message édité par cimourdain le 12-09-2008 à 15:09:13
n°1786112
omega2
Posté le 12-09-2008 à 15:19:00  profilanswer
 

cimourdain > Regarde la solution que je te propose, ça devrait répondre à ce que tu demandes. Si je n'ai pas été assez clair, j'essaierais de te pondre un petit exemple.

n°1786118
cimourdain
Posté le 12-09-2008 à 15:27:16  profilanswer
 

je vois pas en quoi ca réponds à mon problème en fait ! désolé

n°1786126
omega2
Posté le 12-09-2008 à 15:42:18  profilanswer
 

Bon ok, voilà un exemple tout con :

Code :
  1. $code=rand(0,10000);
  2. $_SESSION['AuteurId'][$code]=$IdDeLAuteur;
  3. echo '<input type="hidden" name="AuteurId" value="' . $code '">';


Quand tu reçois :

Code :
  1. if isset($_SESSION['AuteurId'][$_POST['AuteurId']]) {
  2.  $IdDeLAuteur=$_SESSION['AuteurId'][$_POST['AuteurId']];
  3. }else{
  4.  die('Auteur introuvable');
  5. }


 
Avec cette méthode, tu es sur que l'utilisateur ne pourra pas taper dans un auteur qu'il n'a pas créé au cours de la session courante.
 
EDIT : Si tu ne veux que le tout dernier auteur créé dans la session, tu peux aussi affecter l'identifiant directement dans $_SESSION['AuteurId'], ne rien passer dans le formulaire (vu que t'as la donné dans la session) et éviter simplement le "isset", le "rand" et tout ce qui va avec. Ca revient à ce que les autres t'ont indiqué plus haut.


Message édité par omega2 le 12-09-2008 à 15:53:00
n°1786131
Nasga
Posté le 12-09-2008 à 15:57:31  profilanswer
 

C'est une solution sauf que je remplacerai  

Code :
  1. $code=rand(0,10000);


par

Code :
  1. $code= uniqid();


Ou par n'importe quel uuid (perso j'aime bien le uuid() mysql).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Un formulaire en plusieurs pages

 

Sujets relatifs
[php] Ajouter un champs dans un formulaireMYSQL : Créer plusieurs vues ou plusieurs tables ?
fsockopen avec soumission de formulaire1 tab pour plusieurs listes deroulantes
Interdire le rechargement (F5) d'une page/formulaire[Résolu] Style Css Formulaire IE6
Plusieurs JVM pour étendre la mémoire disponible?[PHP] Formulaire ...
faire retouner plusieurs ligne a une requetePlusieurs batch
Plus de sujets relatifs à : Un formulaire en plusieurs pages


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR