What are the limitations of using PHP to prevent double form submissions?

The limitations of using PHP to prevent double form submissions include the fact that it relies on client-side validation, which can be bypassed by users disabling JavaScript or using browser tools. To address this issue, a common approach is to generate a unique token when the form is loaded and store it in a session variable. This token is then included in the form submission and checked against the token stored in the session to ensure that the form is only submitted once.

session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['token'] == $_SESSION['token']) {
        // Process form submission
        unset($_SESSION['token']); // Remove token to prevent resubmission
    } else {
        // Handle double form submission error
    }
}

$token = md5(uniqid(rand(), true));
$_SESSION['token'] = $token;
?>

<form method="post" action="">
    <input type="hidden" name="token" value="<?php echo $token; ?>">
    <!-- Form fields -->
    <button type="submit">Submit</button>
</form>