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

Langage PHP Discussion :

Supprimer les information de $_POST


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Supprimer les information de $_POST
    bonjour,
    j'ai une question est-il possible de supprimer les variables d'un formulaire contenu en post pour éviter la revalidation d'un formulaire à la suite d'une actualisation.

    merci de votre aide.

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    c'est possible mais c'est pas bien propre .

    Sur la page qui accueil les données en post tu crée une variable session , disons $SESSION["isDonneeDejaRecues"] = true;

    Lors du premier accès la variable passe a true , si l'utilisateur fait un refresh tu peux verifier qu'il est pas deja venu sur ladite page comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset( $SESSION["isDonneeDejaRecues"]) &&  $SESSION["isDonneeDejaRecues"] === true){
     unset($_POST);
    }
    else
    {
    $SESSION["isDonneeDejaRecues"] = true;
    }
    ainsi tu efface les données post avant de faire ton traitement , sachant qu'il ne faut pas oublier de traiter a la suite le cas ou le tableau POST est vide.

    C'est une solution.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    ok merci je vais testé ça =)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    ok ça vide les variables contenu en $_POST par contre ça ne règle pas le problème de spam en actualisant la page, le navigateur execute à nouveau le formulaire.

    j'ai pensé à mettre un captcha, mais j'aurais voulu savoir s'il n'y a pas une autre solution =)

    merci de votre aide.

  5. #5
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Il faudrait quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST[...])){
       // Traitement de tes données POST
       // ici
     
       header('Location: page.php');
       die();
    }

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par geek34 Voir le message
    ok ça vide les variables contenu en $_POST
    Non on ne vide jamais les variables $post car c'est le navigateur qui les posséde dans son cache et les renverra si F5 !

    La solution de RideKick est bien la bonne mais il faut la durcir un peut
    toujours par les sessions

    voici un exemple type que j'avais écrit. Qui régle un probléme de retour en cas d'erreurs...

    1) saisie
    saisie, mais rempli les zones déjas saisies et si besoins affiche erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?PHP
    session_start();
    if (!isset($_SESSION['nom'])) {$_SESSION['nom']="";$nom="";}
         else {$nom=$_SESSION['nom'];}
    if (!isset($_SESSION['prenom'])) {$_SESSION['prenom']="";$prenom="";}
         else {$prenom=$_SESSION['prenom'];}
    if (!isset($_SESSION['email'])) {$_SESSION['email']="";$email="";}
         else {$email=$_SESSION['email'];}
    if (!isset($_SESSION['err'])) {$_SESSION['err']="";$err="";}
         else {$err=$_SESSION['err'];}
    ?>
    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'  'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
    <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    body {
    background-color: #EFEFF1;
    }
    body,td,th {
    font-size: 14px;
    font-family: Georgia, Times New Roman, Times, serif;
    }
    div.cent {width: 900px;margin : auto;text-align:center;} 
    </style>
    </head>
    <body>
    <div class="cent">
    <?PHP
     echo("<br />".$err."<br />"); 
    ?>
    <form action="formtraite.php" method="post">
    NOM <?PHP     echo("<input name='Nom' type='text' value='".$nom."' /><br />"); ?>
    Prenom :<?PHP     echo("<input name='Prenom' type='text' value='".$prenom."' /><br />"); ?>
    EMail :<?PHP     echo("<input name='Mail' type='text' value='".$email."' /><br />"); ?>
    <br />  <input name="Envoie" type="submit" value="Envoyer" />
    </form>
    </div>
    </body>
    </html>
    2) controle et anti F5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?php 
    session_start();
    if (!isset($_SESSION['err'])) {$_SESSION['err']="";$err="";}
         else {$err=$_SESSION['err'];}
     if(isset($_POST['Nom'])) $nom=$_POST['Nom'];
     else $nom="";
     $_SESSION['nom']=$nom; 
     if(isset($_POST['Prenom'])) $prenom=$_POST['Prenom'];
     else $prenom="";
     $_SESSION['prenom']=$prenom;
     if(isset($_POST['Mail'])) $email=$_POST['Mail'];
     else $email="";
     $_SESSION['email']=$email;
    if($nom=="" || $prenom=="" || $email=="")
           {
            $_SESSION['err']="Remplissez toutes les zones";
            header('Location: form.php');
            exit;
            }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <?PHP
    //==============anti F5 =====================
    if (!isset($_SESSION['ok'])) {$_SESSION['ok']="";$ok="";}
         else {$ok=$_SESSION['ok'];}
    if($ok!="ok")
    {
    echo ("Vous avez saisi <br /> 1 ".$nom." 2 ".$prenom." 3 ".$email."<br />xx");
    print_r($_POST);
    $_SESSION['ok']="ok";$ok="ok";
    }
    ?>
    </body>
    </html>

Discussions similaires

  1. Comment supprimer les doublons
    Par djelloulc dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 17/09/2013, 14h30
  2. Réponses: 5
    Dernier message: 04/04/2012, 09h54
  3. $_POST : supprimer les paramètres passés par l'url
    Par yosraisi dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2008, 12h19
  4. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  5. [MySQL] Supprimer les informations des champs dans une table (suite)
    Par snakejl dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 26/05/2006, 15h37

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