250 votes

Comment empêcher la resoumission d'un formulaire lorsque la page est rafraîchie (F5 / CTRL+R) ?

J'ai un formulaire simple qui soumet du texte à ma table SQL. Le problème est qu'après avoir soumis le texte, l'utilisateur peut rafraîchir la page et les données sont à nouveau soumises sans que le formulaire ne soit à nouveau rempli. Je pourrais rediriger l'utilisateur vers une autre page après la soumission du texte, mais je veux que les utilisateurs restent sur la même page.

Je me souviens avoir lu quelque chose sur le fait de donner à chaque utilisateur un identifiant de session unique et de le comparer à une autre valeur qui a résolu le problème que je rencontre, mais j'ai oublié où c'était.

0voto

NN73 Player Points 64

W

if ( !refreshed()) {
   //Your Submit Here
        if (isset( $_GET['refresh'])) {
            setcookie("refresh",$_GET['refresh'], time() + (86400 * 5), "/");
        }

    }    
}

function refreshed()
{
    if (isset($_GET['refresh'])) {
        $token = $_GET['refresh'];
        if (isset($_COOKIE['refresh'])) {
            if ($_COOKIE['refresh'] != $token) {
                return false;
            } else {
                return true;
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
}  

function createToken($length) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

?>

A

 <form  action="?refresh=<?php echo createToken(3)?>">

 </form>

-3voto

Brant Points 19

Pourquoi ne pas utiliser la fonction $_POST['submit'] en tant qu'instruction logique afin de sauvegarder ce qui se trouve dans le formulaire. Vous pouvez toujours rediriger vers la même page (au cas où ils actualiseraient leur page, et lorsqu'ils cliqueraient sur go back dans le navigateur, la variable submit post ne serait plus définie. Assurez-vous simplement que votre bouton de soumission possède une variable name y id de submit .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X