What are the best practices for validating form input in PHP to display error messages within the form itself?

When validating form input in PHP to display error messages within the form itself, it's important to check each input field for errors and store any error messages in an array. Then, you can display these error messages next to the corresponding input fields in the form. This helps users easily identify and correct any mistakes they've made.

<?php
$errors = array();

// Validate form input
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_POST["name"];
    $email = $_POST["email"];
    
    // Check for empty name field
    if (empty($name)) {
        $errors['name'] = "Name is required";
    }
    
    // Check for valid email address
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors['email'] = "Invalid email format";
    }
}

// Display form with error messages
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    <input type="text" name="name" value="<?php echo isset($_POST['name']) ? $_POST['name'] : ''; ?>">
    <?php if(isset($errors['name'])) { echo $errors['name']; } ?>
    
    <input type="email" name="email" value="<?php echo isset($_POST['email']) ? $_POST['email'] : ''; ?>">
    <?php if(isset($errors['email'])) { echo $errors['email']; } ?>
    
    <input type="submit" value="Submit">
</form>