PHP Form Validation – Step-by-Step Guide
What is Form Validation in PHP?
PHP Form Validation is the process of checking user input for accuracy, completeness, and security before storing or processing the data.
Prevents invalid data submission
Protects against security threats like XSS and SQL Injection
Enhances user experience
Create an HTML Form
<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<label for="name">Name:</label>
<input type="text" name="name">
<label for="email">Email:</label>
<input type="email" name="email">
<label for="age">Age:</label>
<input type="number" name="age">
<input type="submit" value="Submit">
</form>
Handling Form Data in PHP
Step 1: Initialize Variables
$name = $email = $age = "";
$nameErr = $emailErr = $ageErr = "";
Step 2: Check if the Form is Submitted
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Validate Name
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = validateInput($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
$nameErr = "Only letters and spaces allowed";
}
}
// Validate Email
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = validateInput($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
// Validate Age
if (empty($_POST["age"])) {
$ageErr = "Age is required";
} elseif (!filter_var($_POST["age"], FILTER_VALIDATE_INT)) {
$ageErr = "Invalid age format";
} else {
$age = validateInput($_POST["age"]);
}
}
Input Validation Function
function validateInput($data) {
$data = trim($data); // Remove extra spaces
$data = stripslashes($data); // Remove backslashes
$data = htmlspecialchars($data); // Convert special characters
return $data;
}
Displaying Errors and Data
<p style="color: red;"><?php echo $nameErr; ?></p>
<p style="color: red;"><?php echo $emailErr; ?></p>
<p style="color: red;"><?php echo $ageErr; ?></p>
<h3>Your Input:</h3>
<p>Name: <?php echo $name; ?></p>
<p>Email: <?php echo $email; ?></p>
<p>Age: <?php echo $age; ?></p>
What are the Best Practices for handling Form Validation in php
- Use
htmlspecialchars()
to prevent XSS attacks - Use
filter_var()
for email and number validation - Implement server-side validation, even if you have client-side JavaScript validation
- Prevent CSRF attacks by using tokens
- Sanitize data before storing it in the database