Script php-mysql+ actualisation navigateur

Fermé
ogyon Messages postés 345 Date d'inscription lundi 18 novembre 2002 Statut Contributeur Dernière intervention 23 juin 2009 - 16 déc. 2005 à 15:26
 Julien Fastré - 14 mai 2007 à 22:31
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 :)
A voir également:

3 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
17 déc. 2005 à 18:05
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
ogyon Messages postés 345 Date d'inscription lundi 18 novembre 2002 Statut Contributeur Dernière intervention 23 juin 2009 23
17 déc. 2005 à 16:46
Aucune lueurs??
1
Julien Fastré
14 mai 2007 à 22:31
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
1