Page 1 sur 1

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

Posté : 18 juin 2019, 11:19
par BlitzMX
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

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

Posté : 18 juin 2019, 11:56
par Saian
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.

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

Posté : 18 juin 2019, 14:25
par BlitzMX
ç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

Posté : 18 juin 2019, 14:35
par Saian
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

Posté : 18 juin 2019, 14:46
par BlitzMX
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

Posté : 18 juin 2019, 14:55
par Saian
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

Posté : 18 juin 2019, 16:51
par BlitzMX
J'ai compris, ça marche, merci beaucoup.

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

Posté : 07 juin 2020, 00:23
par Vigile
[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