What techniques can be used to prevent duplicate actions, such as a DB entry, when refreshing a browser window in PHP?

To prevent duplicate actions, such as inserting the same data into a database when refreshing a browser window in PHP, you can implement a token-based solution. This involves generating a unique token for each form submission and checking if the token has already been used before processing the action.

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (empty($_SESSION['token']) || $_SESSION['token'] != $_POST['token']) {
        // Process the form submission
        // Insert data into the database

        // Set the token to prevent duplicate actions
        $_SESSION['token'] = md5(uniqid(rand(), true));
    }
}

// Generate a unique token for each form submission
$token = md5(uniqid(rand(), true));
$_SESSION['token'] = $token;
?>

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