What are the best practices for handling form submissions in PHP to prevent double form submissions and ensure data integrity?
To prevent double form submissions and ensure data integrity in PHP, one common approach is to use a unique token or identifier that is generated when the form is loaded and submitted with the form data. This token can be stored in a session variable or hidden input field, and checked upon form submission to ensure that the form is not submitted more than once.
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['token']) && $_POST['token'] === $_SESSION['form_token']) {
// Process form data
// Reset form token to prevent double submission
unset($_SESSION['form_token']);
} else {
// Handle double form submission error
}
}
// Generate and store form token
$token = md5(uniqid(mt_rand(), true));
$_SESSION['form_token'] = $token;
?>
<form method="post" action="">
<input type="hidden" name="token" value="<?php echo $token; ?>">
<!-- Other form fields -->
<button type="submit">Submit</button>
</form>