What are best practices for ensuring data is only processed once in PHP forms?

To ensure data is only processed once in PHP forms, you can use a token or a hidden field that gets submitted with the form and checked upon form submission. This helps prevent duplicate form submissions and ensures data is processed only once.

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (!empty($_POST['token']) && $_POST['token'] == $_SESSION['token']) {
        // Process form data
        // Make sure to unset or regenerate the token to prevent reuse
        unset($_SESSION['token']);
    } else {
        // Handle duplicate form submission
    }
}

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

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