Empêcher la resoumission involontaire de formulaires
La resoumission de formulaires en raison de l'actualisation de la page est un désagrément courant dans les applications Web. Pour gérer ce problème efficacement, il est crucial d'employer les stratégies suivantes :
Redirection après soumission
Au lieu d'afficher la réponse sur la même page, redirigez l'utilisateur vers un page séparée une fois le formulaire soumis. Cela garantit que lorsque la page actualisée se charge, il s'agit d'une nouvelle requête GET et non d'une répétition de la requête POST qui a déjà été traitée.
Exemple :
// submit // set success flash message (you are using a framework, right?) header('Location: /path/to/record'); exit;
Désactiver la mise en cache du navigateur
Pour empêcher le navigateur de mettre en cache votre formulaire, ajoutez les en-têtes suivants à votre script PHP :
header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache');
Jeton de page unique
Générez un jeton unique sur le serveur pour chaque soumission de formulaire. Incluez ce jeton en tant que champ masqué dans le formulaire et vérifiez-le avant le traitement. Si le jeton ne correspond pas ou est manquant, supprimez la demande en tant que soumission en double.
Exemple (avec jeton de session) :
<?php session_start(); // Generate a unique token and store it in the session $token = md5(uniqid(mt_rand(), true)); $_SESSION['token'] = $token; ?> <!DOCTYPE html> <html> <body> <form action="submit.php" method="post"> <input type="text" name="name"> <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="Submit"> </form> </body> </html>
<?php session_start(); // Get the submitted token $token = $_POST['token']; // Check if the token matches the session token if ($token != $_SESSION['token']) { // Discard the request } else { // Process the form data }
Conclusion
En mettant en œuvre ces techniques, vous pouvez empêcher efficacement les resoumissions indésirables de formulaires dues à l'actualisation de la page et garantir que votre application Web se comporte comme prévu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!