Un formulaire en plusieurs pages - PHP - Programmation
Marsh Posté le 12-09-2008 à 14:51:41
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.
Marsh Posté le 12-09-2008 à 14:59:23
si l'user n'a pas de cookies, je recommande d'enregistrer tous les champs précedent dans un hidden
Marsh Posté le 12-09-2008 à 15:01:37
non
les donénes critiques ( qui est l'auteur par exemple ) ne doivent pas etre modifiables par l'auteur
Marsh Posté le 12-09-2008 à 15:04:39
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.
Marsh Posté le 12-09-2008 à 15:19:00
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.
Marsh Posté le 12-09-2008 à 15:27:16
je vois pas en quoi ca réponds à mon problème en fait ! désolé
Marsh Posté le 12-09-2008 à 15:42:18
Bon ok, voilà un exemple tout con :
Code :
|
Quand tu reçois :
Code :
|
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.
Marsh Posté le 12-09-2008 à 15:57:31
C'est une solution sauf que je remplacerai
Code :
|
par
Code :
|
Ou par n'importe quel uuid (perso j'aime bien le uuid() mysql).
Marsh Posté le 12-09-2008 à 13:59:06
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.