|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
voilà j'ai un petit soucis avec mes formulaire php en méthode post je procède de cette manière : un fichier formulaire.html qui remvoit via le post à form_formulaire.php qui vérifie les données avant de les insérrer dans le base si le post. exemple : if($_Post['nom']{ $nom=$_Post['nom']; $requete echo " message de reusite"); } tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page j'ai une nouvelle insertion. comment évité ce genre de problème |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr a écrit :
> Bonjour, > > voilà j'ai un petit soucis avec mes formulaire php en méthode post > > je procède de cette manière : > > un fichier formulaire.html qui remvoit via le post à form_formulaire.php qui > vérifie les données avant de les insérrer dans le base si le post. > > exemple : > > if($_Post['nom']{ > > $nom=$_Post['nom']; > > > $requete > > echo " message de reusite"); > > } > > tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page > j'ai une nouvelle insertion. > > comment évité ce genre de problème 1/ En faisant un redirect après le traitement - ça n'empèche pas totalement les soumissions multiples, mais ça limite les risques. 2/ En incluant dans le formulaire (dans un champ hidden) un identifiant unique autogénéré (lors du premier affichage du formulaire uniquement, of course), correspondant à un champ de la base ayant une contrainte d'unicité. Ce qui permet de détecter sans ambiguité une re-soumission accidentelle. Attention, seule le second point assure une réelle sécurité. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr wrote:
> tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page > j'ai une nouvelle insertion. > comment évité ce genre de problème Problème débattu maintes fois. Les solutions les plus simples sont: - que la page form_formulaire.php fasse, après traitement des données, une redirection vers une autre page, - que ta page de formulaire initie une session qui sera détruite par la page form_formulaire après traitement... -- Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu Réseau IRC Francophone: http://www.crazy-irc.net |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr wrote:
> Bonjour, Bonjour, > un fichier formulaire.html qui remvoit via le post à form_formulaire.php qui > vérifie les données avant de les insérrer dans le base si le post. >[...] > tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page > j'ai une nouvelle insertion. > comment évité ce genre de problème? Puisque form_formulaire.php "vérifie", ajoute une vérification supplémentaire? Dis nous dans quoi sont stockés les données, tu pourrais ajouter la date d'insertion et l'IP et si la meme IP soumet trop vite avec les memes données, tu refuses. Sinon, j'ai bien une idée mais en Javascript, donc hors charte. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr a écrit :
> Bonjour, > > voilà j'ai un petit soucis avec mes formulaire php en méthode post > > je procède de cette manière : > > un fichier formulaire.html qui remvoit via le post à form_formulaire.php qui > vérifie les données avant de les insérrer dans le base si le post. > > exemple : > > if($_Post['nom']{ > > $nom=$_Post['nom']; > > > $requete > > echo " message de reusite"); > > } > > tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page > j'ai une nouvelle insertion. > > comment évité ce genre de problème 1/ En faisant un redirect après le traitement - ça n'empèche pas totalement les soumissions multiples, mais ça limite les risques. 2/ En incluant dans le formulaire (dans un champ hidden) un identifiant unique autogénéré (lors du premier affichage du formulaire uniquement, of course), correspondant à un champ de la base ayant une contrainte d'unicité. Ce qui permet de détecter sans ambiguité une re-soumission accidentelle. Attention, seule le second point assure une réelle sécurité. |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr wrote:
> tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page > j'ai une nouvelle insertion. > comment évité ce genre de problème Problème débattu maintes fois. Les solutions les plus simples sont: - que la page form_formulaire.php fasse, après traitement des données, une redirection vers une autre page, - que ta page de formulaire initie une session qui sera détruite par la page form_formulaire après traitement... -- Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu Réseau IRC Francophone: http://www.crazy-irc.net |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr wrote:
> Bonjour, Bonjour, > un fichier formulaire.html qui remvoit via le post à form_formulaire.php qui > vérifie les données avant de les insérrer dans le base si le post. >[...] > tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page > j'ai une nouvelle insertion. > comment évité ce genre de problème? Puisque form_formulaire.php "vérifie", ajoute une vérification supplémentaire? Dis nous dans quoi sont stockés les données, tu pourrais ajouter la date d'insertion et l'IP et si la meme IP soumet trop vite avec les memes données, tu refuses. Sinon, j'ai bien une idée mais en Javascript, donc hors charte. |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Le 05/10/2007 08:20, yoyo@invalid.fr a écrit :
> Bonjour, Bonjour. Je profite de ton article pour te signaler que ton adresse, visiblement invalide, devrait être déclarée dans le nom de domaine de premier niveau « invalid », réservé à cet effet, et pas dans celui de second niveau « invalid.fr ». Donc par exemple : yoyo@fr.invalid (Par ailleurs une adresse valide dans le champ Reply-To permettrait de te répondre en privé sans pour autant fournir cette adresse à l'immense majorité des spammeurs.) > voilà j'ai un petit soucis avec mes formulaire php en méthode post > > je procède de cette manière : > > un fichier formulaire.html qui remvoit via le post à form_formulaire.php qui > vérifie les données avant de les insérrer dans le base si le post. .... si le post ? > exemple : > > if($_Post['nom']{ > $nom=$_Post['nom']; > $requete > echo " message de reusite"); > } Il manque quelques parenthèses, et il y a un problème de casse avec le nom de la variable $_POST. Je suppose que ton script n'est pas comme ça, car sinon il plantera immédiatement. Note qu'un copier-coller depuis le script aurait, du coup, été préférable. > tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page > j'ai une nouvelle insertion. > > comment évité ce genre de problème C'est plutôt une question de technique de programmation avec les bases de données qu'une question de PHP, et j'imagine qu'un meilleur groupe aurait été fr.comp.applications.sgbd. Mais à priori la réponse doit être de trouver un identifiant unique pour la table, qui dépendra des données saisies, au lieu de choisir un entier incrémenté automatiquement. |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Le 05/10/2007 08:20, yoyo@invalid.fr a écrit :
> Bonjour, Bonjour. Je profite de ton article pour te signaler que ton adresse, visiblement invalide, devrait être déclarée dans le nom de domaine de premier niveau « invalid », réservé à cet effet, et pas dans celui de second niveau « invalid.fr ». Donc par exemple : yoyo@fr.invalid (Par ailleurs une adresse valide dans le champ Reply-To permettrait de te répondre en privé sans pour autant fournir cette adresse à l'immense majorité des spammeurs.) > voilà j'ai un petit soucis avec mes formulaire php en méthode post > > je procède de cette manière : > > un fichier formulaire.html qui remvoit via le post à form_formulaire.php qui > vérifie les données avant de les insérrer dans le base si le post. .... si le post ? > exemple : > > if($_Post['nom']{ > $nom=$_Post['nom']; > $requete > echo " message de reusite"); > } Il manque quelques parenthèses, et il y a un problème de casse avec le nom de la variable $_POST. Je suppose que ton script n'est pas comme ça, car sinon il plantera immédiatement. Note qu'un copier-coller depuis le script aurait, du coup, été préférable. > tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la page > j'ai une nouvelle insertion. > > comment évité ce genre de problème C'est plutôt une question de technique de programmation avec les bases de données qu'une question de PHP, et j'imagine qu'un meilleur groupe aurait été fr.comp.applications.sgbd. Mais à priori la réponse doit être de trouver un identifiant unique pour la table, qui dépendra des données saisies, au lieu de choisir un entier incrémenté automatiquement. |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
CrazyCat wrote:
> yoyo@invalid.fr wrote: >> tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la >> page j'ai une nouvelle insertion. >> comment évité ce genre de problème > > Problème débattu maintes fois. > Les solutions les plus simples sont: > - que la page form_formulaire.php fasse, après traitement des données, > une redirection vers une autre page, > - que ta page de formulaire initie une session qui sera détruite par la > page form_formulaire après traitement... > ok!! mais dans ce cas là il faut que je prévoit une session, même si c'est une page grand public qui ne nécessite pas d'autenfification. |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
CrazyCat wrote:
> yoyo@invalid.fr wrote: >> tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la >> page j'ai une nouvelle insertion. >> comment évité ce genre de problème > > Problème débattu maintes fois. > Les solutions les plus simples sont: > - que la page form_formulaire.php fasse, après traitement des données, > une redirection vers une autre page, > - que ta page de formulaire initie une session qui sera détruite par la > page form_formulaire après traitement... > ok!! mais dans ce cas là il faut que je prévoit une session, même si c'est une page grand public qui ne nécessite pas d'autenfification. |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
Mihamina Rakotomandimby wrote:
> yoyo@invalid.fr wrote: >> Bonjour, > > Bonjour, > >> un fichier formulaire.html qui remvoit via le post à form_formulaire.php >> qui vérifie les données avant de les insérrer dans le base si le post. >>[...] >> tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la >> page j'ai une nouvelle insertion. >> comment évité ce genre de problème? > > Puisque form_formulaire.php "vérifie", ajoute une vérification > supplémentaire? > Dis nous dans quoi sont stockés les données, tu pourrais ajouter la date > d'insertion et l'IP et si la meme IP soumet trop vite avec les memes > données, tu refuses. > dans une BDD, en effet j'avais pas pensé au coup de l'ip. > Sinon, j'ai bien une idée mais en Javascript, donc hors charte. oui en effet mais cela peux être désativé. |
|
|
|
#13 |
|
Messages: n/a
Hébergeur: |
Mihamina Rakotomandimby wrote:
> yoyo@invalid.fr wrote: >> Bonjour, > > Bonjour, > >> un fichier formulaire.html qui remvoit via le post à form_formulaire.php >> qui vérifie les données avant de les insérrer dans le base si le post. >>[...] >> tout fonctionne mais j'ai juste un soucis si l'internaute rafraichis la >> page j'ai une nouvelle insertion. >> comment évité ce genre de problème? > > Puisque form_formulaire.php "vérifie", ajoute une vérification > supplémentaire? > Dis nous dans quoi sont stockés les données, tu pourrais ajouter la date > d'insertion et l'IP et si la meme IP soumet trop vite avec les memes > données, tu refuses. > dans une BDD, en effet j'avais pas pensé au coup de l'ip. > Sinon, j'ai bien une idée mais en Javascript, donc hors charte. oui en effet mais cela peux être désativé. |
|
|
|
#14 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr wrote:
>> - que ta page de formulaire initie une session qui sera détruite par la >> page form_formulaire après traitement... > ok!! mais dans ce cas là il faut que je prévoit une session, même si c'est > une page grand public qui ne nécessite pas d'autenfification. Et alors? ce n'est pas un problème. Beaucoup de sites utilisent des sessions pour transmettre des informations d'une page à une autre. session ne signifie pas authentification, c'est juste une variable temporaire. -- Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu Réseau IRC Francophone: http://www.crazy-irc.net |
|
|
|
#15 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr wrote:
>> - que ta page de formulaire initie une session qui sera détruite par la >> page form_formulaire après traitement... > ok!! mais dans ce cas là il faut que je prévoit une session, même si c'est > une page grand public qui ne nécessite pas d'autenfification. Et alors? ce n'est pas un problème. Beaucoup de sites utilisent des sessions pour transmettre des informations d'une page à une autre. session ne signifie pas authentification, c'est juste une variable temporaire. -- Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu Réseau IRC Francophone: http://www.crazy-irc.net |
|
|
|
#16 |
|
Messages: n/a
Hébergeur: |
--{ yoyo@invalid.fr a plopé ceci: }--
>> > dans une BDD, en effet j'avais pas pensé au coup de l'ip. Une fois de plus, ça ne marche pas à tout les coups, l'IP pouvant changer d'une requète à l'autre. Comme chez AOL il y a quelques années... -- PEBCAK is obsolete. Use PICNIC instead. +----------------------------------------+ | "Problem In Chair, Not In Computer" | +----------------------------------------+ |
|
|
|
#17 |
|
Messages: n/a
Hébergeur: |
--{ yoyo@invalid.fr a plopé ceci: }--
>> > dans une BDD, en effet j'avais pas pensé au coup de l'ip. Une fois de plus, ça ne marche pas à tout les coups, l'IP pouvant changer d'une requète à l'autre. Comme chez AOL il y a quelques années... -- PEBCAK is obsolete. Use PICNIC instead. +----------------------------------------+ | "Problem In Chair, Not In Computer" | +----------------------------------------+ |
|
|
|
#18 |
|
Messages: n/a
Hébergeur: |
CrazyCat wrote:
> yoyo@invalid.fr wrote: >>> - que ta page de formulaire initie une session qui sera détruite par la >>> page form_formulaire après traitement... >> ok!! mais dans ce cas là il faut que je prévoit une session, même si >> c'est une page grand public qui ne nécessite pas d'autenfification. > > Et alors? ce n'est pas un problème. Beaucoup de sites utilisent des > sessions pour transmettre des informations d'une page à une autre. > > session ne signifie pas authentification, c'est juste une variable > temporaire. > ok!!! j'aurais jamais pensé à ça mais cela me convient très bien re-direction + session. |
|
|
|
#19 |
|
Messages: n/a
Hébergeur: |
CrazyCat wrote:
> yoyo@invalid.fr wrote: >>> - que ta page de formulaire initie une session qui sera détruite par la >>> page form_formulaire après traitement... >> ok!! mais dans ce cas là il faut que je prévoit une session, même si >> c'est une page grand public qui ne nécessite pas d'autenfification. > > Et alors? ce n'est pas un problème. Beaucoup de sites utilisent des > sessions pour transmettre des informations d'une page à une autre. > > session ne signifie pas authentification, c'est juste une variable > temporaire. > ok!!! j'aurais jamais pensé à ça mais cela me convient très bien re-direction + session. |
|
|
|
#20 |
|
Messages: n/a
Hébergeur: |
Thierry B. a écrit :
> --{ yoyo@invalid.fr a plopé ceci: }-- > >> dans une BDD, en effet j'avais pas pensé au coup de l'ip. > > Une fois de plus, ça ne marche pas à tout les coups, l'IP pouvant > changer d'une requète à l'autre. Comme chez AOL il y a quelques > années... > Ou une même IP pouvant être partagée par pas mal de monde... |
|
|
|
#21 |
|
Messages: n/a
Hébergeur: |
Thierry B. a écrit :
> --{ yoyo@invalid.fr a plopé ceci: }-- > >> dans une BDD, en effet j'avais pas pensé au coup de l'ip. > > Une fois de plus, ça ne marche pas à tout les coups, l'IP pouvant > changer d'une requète à l'autre. Comme chez AOL il y a quelques > années... > Ou une même IP pouvant être partagée par pas mal de monde... |
|
|
|
#22 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr wrote:
> ok!!! j'aurais jamais pensé à ça mais cela me convient très bien > re-direction + session. Ca fait trop... Il te suffit que ta page formulaire fasse quelque chose comme: session_start(); $_SESSION['monsite']['post'] = uniqid(); et dans ta page de traitement: <? if ($_SESSION['monsite']['post']>0) { // traitement de ton formulaire $_SESSION['monsite'] = NULL; } ?> Et là, si on fait un F5, la session n'existe plus donc le formulaire n'est pas traité. -- Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu Réseau IRC Francophone: http://www.crazy-irc.net |
|
|
|
#23 |
|
Messages: n/a
Hébergeur: |
yoyo@invalid.fr wrote:
> ok!!! j'aurais jamais pensé à ça mais cela me convient très bien > re-direction + session. Ca fait trop... Il te suffit que ta page formulaire fasse quelque chose comme: session_start(); $_SESSION['monsite']['post'] = uniqid(); et dans ta page de traitement: <? if ($_SESSION['monsite']['post']>0) { // traitement de ton formulaire $_SESSION['monsite'] = NULL; } ?> Et là, si on fait un F5, la session n'existe plus donc le formulaire n'est pas traité. -- Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu Réseau IRC Francophone: http://www.crazy-irc.net |
|
|
|
#24 |
|
Messages: n/a
Hébergeur: |
CrazyCat a écrit :
> yoyo@invalid.fr wrote: > >> ok!!! j'aurais jamais pensé à ça mais cela me convient très bien >> re-direction + session. > > > Ca fait trop... Pas nécessairement. Le redirect a d'autres raisons d'être (n'en déplaise à John !-) |
|
|
|
#25 |
|
Messages: n/a
Hébergeur: |
CrazyCat a écrit :
> yoyo@invalid.fr wrote: > >> ok!!! j'aurais jamais pensé à ça mais cela me convient très bien >> re-direction + session. > > > Ca fait trop... Pas nécessairement. Le redirect a d'autres raisons d'être (n'en déplaise à John !-) |
|
![]() |
| Outils de la discussion | |
|
|