Are there any best practices for handling form submissions in PHP to prevent scripts from being executed multiple times?

To prevent form submissions from being executed multiple times in PHP, one common approach is to use a token-based method. This involves generating a unique token when the form is loaded, storing it in a session or hidden field, and verifying it upon form submission. If the token matches, the form submission is processed, and the token is invalidated to prevent multiple submissions.

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['token']) && $_POST['token'] === $_SESSION['form_token']) {
        // Process form submission
        // Invalidate token to prevent multiple submissions
        unset($_SESSION['form_token']);
    } else {
        // Token mismatch, handle error or prevent submission
    }
}

// Generate unique token
$token = bin2hex(random_bytes(32));
$_SESSION['form_token'] = $token;
?>

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