What is the best practice for handling data persistence after a page refresh in PHP?

When a page is refreshed in PHP, the data that was previously submitted or displayed may be lost. To handle data persistence after a page refresh, one common approach is to use sessions to store the data temporarily and retrieve it when the page is refreshed.

<?php
session_start();

// Check if form data has been submitted
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Store form data in session variables
    $_SESSION['username'] = $_POST['username'];
    $_SESSION['email'] = $_POST['email'];
} else {
    // Retrieve form data from session variables
    $username = isset($_SESSION['username']) ? $_SESSION['username'] : '';
    $email = isset($_SESSION['email']) ? $_SESSION['email'] : '';
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="username" value="<?php echo $username; ?>" placeholder="Username">
    <input type="email" name="email" value="<?php echo $email; ?>" placeholder="Email">
    <button type="submit">Submit</button>
</form>