IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

$_POST['var'] et rafraichissement de la page [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut $_POST['var'] et rafraichissement de la page
    Salam; me revoilà:
    une fois que je valide mon formulaire , j'ai les données qui sont bien transmis dans la BDD. si je rafraichi ma page les données sont enregistrés une deuxième fois !!!! là je me demande qu'elle est la meilleur façon de contrôlé cette action:
    faire un header pour changer la page formulaire par page affichage de données.
    vider les $_POST['var']: unset ($var_session) ou $_POST = array().
    merci

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    (re) Salut

    faire un header pour changer la page formulaire par page affichage de données.
    L'un n'empêche pas l'autre.

    Fais une redirection, que ce soit sur la même page ou autre, on s'en fiche.
    En faite, effectue la redirection là où c'est le plus logique de le faire (théoriquement le plus pratique pour l'utilisateur).

    Cependant, admettons que précédemment on stockait des données dans la session pour réaliser cette étape là, et que lors du traitement (donc avant redirection) ces données ne sont plus utiles, alors les supprimer de la session serait mieux.

    Dans tous les cas il n'y a pas à détruire au niveau de POST.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    voici comment j'ai résolu ce souci (formulaire et traitement sur la même page) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php session_start(); ?>
     
    <?php
    // SI LE FORM A ETE POSTE
    if (isset($_POST['BtnEnvoi']) 
    	&& isset($_SESSION['random_form']) && isset($_POST['randomform'])
    	&& $_POST['randomform']==$_SESSION['random_form']) {
    	// script de TRAITEMENT du formulaire
    	include('./formulaire-traiter.php');
    }
    // Protection contre "actualiser la page" ou envoi via l'exterieur (vol de formulaire)
    $_SESSION['random_form'] = MakeRandomString(6); // FONCTION créant un NOUVEAU nombre alphanumerique aleatoire (ici de 6 caractères)
    unset($_POST);
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" onSubmit="validFormulaire(); return false;">
    	<input type="hidden" name="randomform" value="<?php echo $_SESSION['random_form']; ?>" />
    	<!-- ...... -->
     
    	<button name="BtnEnvoi" type="submit">Envoyer</button>
    </form>
    L'"Actualisation" de la page ne change pas le contenu du $_POST,
    MAIS à pour effet de générer un NOUVEAU nombre aléatoire dans la $_SESSION, qui de ce fait est différente du $_POST.
    CQFD.

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam, RunCodePhp: un grand plat de couscous sa te dit , tu sera le bien venu
    en faite mon choix porté sur l'idée
    En faite, effectue la redirection là où c'est le plus logique de le faire (théoriquement le plus pratique pour l'utilisateur).
    donc la page affichage de données.
    alors les supprimer de la session serait mieux.
    là je préfère la première solution qui est catégorique.
    jreaux63:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="randomform" value="<?php echo $_SESSION['random_form']; ?>" />
    là celui qui vole le formulaire , il ne peut pas changer la valeur !!!! le petit malin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PHP/Javascript : Rafraichissement d'une page
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/07/2006, 14h44
  2. rafraichissement automatique des pages
    Par gloglo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/06/2006, 14h39
  3. rafraichissement d'une page
    Par salmer dans le forum ASP
    Réponses: 2
    Dernier message: 19/04/2006, 15h53
  4. [PHP-JS] [ComboBox] Rafraichissement de la page
    Par tchoukapi dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2006, 03h17
  5. Comment arreter le rafraichissement d'une page avec un popup
    Par Wanty dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2005, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo