[RESOLU] Empêcher renvoi formulaire après rafraîchissement de la page

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Empêcher renvoi formulaire après rafraîchissement de la page

Re: Empêcher renvoi formulaire après rafraîchissement de la page

par Vigile » 07 juin 2020, 00:23

[PHP]
[/PHP]
Salut, il faut que tu fasses une redirection après avoir traité le formulaire
header('Location: unscript.php'); 
exit();
ainsi le refresh se fera sur cette adresse.
bonsoir j'ai essaye mais ca marche pas

Re: Empêcher renvoi formulaire après rafraîchissement de la page

par BlitzMX » 18 juin 2019, 16:51

J'ai compris, ça marche, merci beaucoup.

Re: Empêcher renvoi formulaire après rafraîchissement de la page

par Saian » 18 juin 2019, 14:55

Si tu essaies de comprendre l'exemple que je t'ai donné, ça devrait pas être très compliqué de déterminer où placer ce fameux header.
T'as pas un if qui encapsule le code d'insertion ? alors où mettre le header à ton avis ?

Re: Empêcher renvoi formulaire après rafraîchissement de la page

par BlitzMX » 18 juin 2019, 14:46

Voici mon Code: peux-tu m'indiquer ou je dois ajouter le header?


<?php

// DEFINE DATABASE PDO
try {
    $bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
} catch (\Throwable $e) {
    die('Erreur : ' . $e->getMessage());
}

// INSERT TO DATABASE
if (isset($_POST["Titre"])) {
    $Titre = $_POST["Titre"];
    $Contenu = $_POST["Contenu"];
    // PREPARE QUERY - use prepare pour les accents sur les lettres
    $req = $bdd->prepare("INSERT INTO billets(titre, contenu, date_creation) values (?, ?, NOW())");
    $req->execute(array($Titre, $Contenu));
}

// GET INDEX HTML
$view = file_get_contents(("index_vue.html"));

// GET BILLET CONTENT
$billets = file_get_contents("billet_content.html");

// GET BILLETS FROM DATABASE
try {
    $bdd = new PDO('mysql:host=localhost; dbname=blog', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
} catch (Exception $e) {
    die('Erreur : ' . $e->getMessage());
}

// PREPARE QUERY QUERY - use prepare pour les accents sur les lettres
$req = $bdd->prepare("SELECT * FROM billets ORDER BY date_creation DESC");
$req->execute();

// -- REPLACE LIST_BILLETS --
// FETCH QUERY RESULT FROM DATABASE TO $result
$result = $req->fetchall();
$bloc_billet = "";
foreach ($result as $current_result) {
    $current_billet = $billets;
    // REPLACE {DATE_BILLET} - BY $current_result["date_creation"] - INSIDE $current_billet
    $current_billet = str_replace("{DATE_BILLET}", $current_result["date_creation"], $current_billet);
    $current_billet = str_replace("{TITRE_BILLET}", $current_result["titre"], $current_billet);
    $current_billet = str_replace("{CONTENU_BILLET}", $current_result["contenu"], $current_billet);
    $current_billet = str_replace("{ID}", $current_result["id"], $current_billet);
    $bloc_billet .= $current_billet;
}

// REMPLACEMENT FINAL AVEC LE CODE FINALE
$view = str_replace("{LIST_BILLETS}", $bloc_billet, $view);

// MONTRE TOUT LE CODE DE LA PAGE
echo $view;



Re: Empêcher renvoi formulaire après rafraîchissement de la page

par Saian » 18 juin 2019, 14:35

Normalement t'es pas sensé avoir une boucle. Avec un script index.php :
if (isset($_GET['action']) && $_GET['action'] == 'insert') {
  // do the insert
  /* redirect after the insert */
  header('Location: index.php');
  exit();
}
// page display
La condition du if peut être n'importe quelle condition qui te permet de savoir que tu dois faire l'insert, mais il faut évidemment que cette condition ne soit pas valide lorsqu'il n'y pas d'insert à faire ainsi php ne passe pas sur le header location et il n'y pas de boucle de redirection.

Re: Empêcher renvoi formulaire après rafraîchissement de la page

par BlitzMX » 18 juin 2019, 14:25

ça marche pas. C'est peut être parce que le code du form insert est dans le propre index. Et comme je mets le code refresh dans l'index... ça fais une boucle.

Re: Empêcher renvoi formulaire après rafraîchissement de la page

par Saian » 18 juin 2019, 11:56

Salut, il faut que tu fasses une redirection après avoir traité le formulaire
header('Location: unscript.php'); 
exit();
ainsi le refresh se fera sur cette adresse.

Empêcher renvoi formulaire après rafraîchissement de la page

par BlitzMX » 18 juin 2019, 11:19

Bonjour

Comment empêcher le renvoi de formulaire avec le refresh.

index.php

// DEFINE DATABASE PDO
try {
    $bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
} catch (\Throwable $e) {
    die('Erreur : ' . $e->getMessage());
}

// INSERT TO DATABASE
if (isset($_POST["Titre"])) {
    $Titre = $_POST["Titre"];
    $Contenu = $_POST["Contenu"];
    // PREPARE QUERY - use prepare pour les accents sur les lettres
    $req = $bdd->prepare("INSERT INTO billets(titre, contenu, date_creation) values (?, ?, NOW())");
    $req->execute(array($Titre, $Contenu));
}






Merci