What are the best practices for handling form submissions in PHP to prevent data from being overwritten on each page load?

When handling form submissions in PHP, one common issue is that data can be overwritten on each page load if not properly managed. To prevent this, you can use sessions to store form data temporarily and then process it accordingly. This ensures that the data is retained across page loads until it is no longer needed.

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $_SESSION['form_data'] = $_POST;
    // Process form data here
    
    // Redirect to prevent form resubmission
    header("Location: /thank-you.php");
    exit;
}

// Display form with pre-filled data if available
$firstName = isset($_SESSION['form_data']['first_name']) ? $_SESSION['form_data']['first_name'] : '';
$lastName = isset($_SESSION['form_data']['last_name']) ? $_SESSION['form_data']['last_name'] : '';

// Clear form data from session
unset($_SESSION['form_data']);
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="first_name" value="<?php echo $firstName; ?>" placeholder="First Name">
    <input type="text" name="last_name" value="<?php echo $lastName; ?>" placeholder="Last Name">
    <button type="submit">Submit</button>
</form>