What is the Post/Redirect/Get pattern and how can it help prevent form resubmissions in PHP?

The Post/Redirect/Get pattern is a web development design pattern used to prevent form resubmissions when a user refreshes a page after submitting a form. By redirecting the user to a different URL after processing the form data, the browser's refresh button will not resubmit the form data. In PHP, this can be achieved by processing the form data, redirecting the user to a new page using the header() function, and using session variables to display success messages.

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Process form data here
    
    // Redirect user to a new page to prevent form resubmission
    header("Location: success.php");
    exit;
}

?>

<!DOCTYPE html>
<html>
<head>
    <title>Form Example</title>
</head>
<body>
    <?php
    // Display success message if set in session
    if (isset($_SESSION['success_message'])) {
        echo $_SESSION['success_message'];
        unset($_SESSION['success_message']);
    }
    ?>

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <!-- Form fields here -->
        <input type="submit" value="Submit">
    </form>
</body>
</html>