How can PHP form validation be improved to provide accurate error messages?

When validating forms in PHP, it's important to provide accurate error messages to users so they know exactly what went wrong. One way to improve this is by using an associative array to store the error messages and then display them next to the corresponding form fields. This way, users can easily identify and correct any mistakes they made.

$errors = array();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Validate form fields
    if (empty($_POST["name"])) {
        $errors["name"] = "Name is required";
    }

    if (empty($_POST["email"])) {
        $errors["email"] = "Email is required";
    }

    // Check for any errors
    if (count($errors) == 0) {
        // Process form data
    }
}

// Display form with error messages
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    <input type="text" name="name" placeholder="Name">
    <?php if(isset($errors["name"])) { echo $errors["name"]; } ?>

    <input type="email" name="email" placeholder="Email">
    <?php if(isset($errors["email"])) { echo $errors["email"]; } ?>

    <button type="submit">Submit</button>
</form>