Discussion:
formulaire php
(trop ancien pour répondre)
y***@invalid.fr
2007-10-05 06:20:07 UTC
Permalink
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
Bruno Desthuilliers
2007-10-05 07:26:47 UTC
Permalink
Post by y***@invalid.fr
Bonjour,
voilà j'ai un petit soucis avec mes formulaire php en méthode post
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.
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é.
CrazyCat
2007-10-05 07:26:47 UTC
Permalink
Post by y***@invalid.fr
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
y***@invalid.fr
2007-10-05 07:59:31 UTC
Permalink
Post by CrazyCat
Post by y***@invalid.fr
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.
- 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.
CrazyCat
2007-10-05 08:45:01 UTC
Permalink
Post by y***@invalid.fr
Post by CrazyCat
- 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
y***@invalid.fr
2007-10-05 14:03:28 UTC
Permalink
Post by CrazyCat
Post by y***@invalid.fr
Post by CrazyCat
- 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.
CrazyCat
2007-10-08 07:19:54 UTC
Permalink
Post by y***@invalid.fr
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
Bruno Desthuilliers
2007-10-08 20:23:02 UTC
Permalink
Post by CrazyCat
Post by y***@invalid.fr
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 !-)
CrazyCat
2007-10-09 07:49:45 UTC
Permalink
Post by Bruno Desthuilliers
Post by CrazyCat
Post by y***@invalid.fr
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 !-)
Ma réponse était spécifique au problème actuel. Un redirect peut parfois
être utile même si je plussoie l'avis de John comme quoi il y a d'autres
solutions plus élégantes et souvent plus appropriées.
--
Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu
Réseau IRC Francophone: http://www.crazy-irc.net
Mihamina Rakotomandimby
2007-10-05 07:26:47 UTC
Permalink
Post by y***@invalid.fr
Bonjour,
Bonjour,
Post by y***@invalid.fr
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.
y***@invalid.fr
2007-10-05 08:05:25 UTC
Permalink
Post by y***@invalid.fr
Post by y***@invalid.fr
Bonjour,
Bonjour,
Post by y***@invalid.fr
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.
Post by y***@invalid.fr
Sinon, j'ai bien une idée mais en Javascript, donc hors charte.
oui en effet mais cela peux être désativé.
Thierry B\.
2007-10-05 11:47:36 UTC
Permalink
Post by y***@invalid.fr
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" |
+----------------------------------------+
Bruno Desthuilliers
2007-10-05 15:47:10 UTC
Permalink
Post by Thierry B\.
Post by y***@invalid.fr
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...
Olivier Miakinen
2007-10-05 07:35:08 UTC
Permalink
Post by y***@invalid.fr
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 : ***@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.)
Post by y***@invalid.fr
voilà j'ai un petit soucis avec mes formulaire php en méthode post
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 ?
Post by y***@invalid.fr
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.
Post by y***@invalid.fr
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.
Continuer la lecture sur narkive:
Loading...