Script php-mysql+ actualisation navigateur [Fermé]

Signaler
Messages postés
345
Date d'inscription
lundi 18 novembre 2002
Statut
Contributeur
Dernière intervention
23 juin 2009
-
 Julien Fastré -
Bonjours à tous :)

Ptite problematique:

Un formulaire php (form.php avec des variables POST) vient remplir une base de données via le script (script.php). L'insertion se passe niquel, et à vrai dire il n'y a pas de pb.
Cependant, si on réactualise la page (script.php) cela incrémente la base de la meme valeur...encore et encore à chaque clic de réactualisation...
Comment empecher cela?

(pourtant je réinitialise bien mes valeurs au début...mais que néni ca continue)

Merci d'avance pour vos lueurs :)

3 réponses

Messages postés
912
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
31 juillet 2008
483
salut,
Il me semble que tu peux eviter ce problème en utilsant une redirection :
1 -> la page qui propose ton formulaire
2 -> POST (action navigateur)
3 -> script qui traite le formulaire et qui fait une redirection
4 - > la page qui fait l'affichage
Pour faire une redirection, avant tout affichage dans la page en php:
header( "Location: $url_absolu_de_la_page" ) ;

Tu peux mettre une url relative, mais certains navigateurs ne supportent pas bien
le changement de dossier.
A+, crabs
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 84136 internautes nous ont dit merci ce mois-ci

Messages postés
345
Date d'inscription
lundi 18 novembre 2002
Statut
Contributeur
Dernière intervention
23 juin 2009
23
Aucune lueurs??

Un moyen très simple:

Une variable de session qui s'incrémente à chaque page. Dans le formulaire, une variable de type 'hidden' qui a la valeur de la variable session courante.

Le script qui traite les données de formulaire ne s'exécute que si la variable cachée renvoyée par le formulaire est égale à la variable de session - 1 .

Exemple:
Au début de la page:
$_session['page'] ++ //(il ne faut pas oublier, si la variable n'existe pas, de la créér avant)

<form>
<input type = 'hidden' value = $_session['page'] name = 'page'>
</form>

et le script qui traite le formulaire:

if ( "si c'est le formulaire qui a été envoyé" && $_post['page'] =  $_session['page'] -1 )
               // le script qui traite les données du formulaire est exécuté. 


Je ne sais pas si la méthode est sûre au niveau de la sécurité, mais a priori elle ne devrait pas l'être moins que le script séparé.

Julien