PHP forms allow you to collect user input via HTML forms and process it server-side. Always validate and sanitize input to prevent security vulnerabilities.
The method attribute determines how data is sent. Use POST for sensitive data and GET for search/filter queries.
<!-- GET form - data appears in URL -->
<form action="search.php" method="GET">
<input type="text" name="q" placeholder="Search...">
<button type="submit">Search</button>
</form>
<!-- POST form - data in request body -->
<form action="register.php" method="POST">
<input type="text" name="username" required>
<input type="email" name="email" required>
<input type="password" name="password" required>
<select name="role">
<option value="user">User</option>
<option value="admin">Admin</option>
</select>
<button type="submit">Register</button>
</form>
Always validate required fields and sanitize input with htmlspecialchars() to prevent XSS. Use filter_var() for type-specific validation.
<?php
$errors = [];
$name = $email = $age = "";
if ($_SERVER["REQUEST_METHOD"] === "POST") {
// Required field check
if (empty($_POST["name"])) {
$errors[] = "Name is required.";
} else {
$name = htmlspecialchars(trim($_POST["name"]));
}
// Email validation
if (empty($_POST["email"])) {
$errors[] = "Email is required.";
} elseif (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
$errors[] = "Invalid email format.";
} else {
$email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
}
// Integer validation
if (!filter_var($_POST["age"] ?? '', FILTER_VALIDATE_INT,
["options" => ["min_range" => 1, "max_range" => 120]])) {
$errors[] = "Age must be between 1 and 120.";
} else {
$age = (int)$_POST["age"];
}
if (empty($errors)) {
echo "Welcome, $name! Email: $email, Age: $age";
}
}
// Display errors
foreach ($errors as $error) {
echo "<p style='color:red'>$error</p>";
}
?>
<?php
// Validate email
$email = "user@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Valid email";
}
// Validate URL
$url = "https://www.example.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "Valid URL";
}
// Validate integer
$num = "42";
if (filter_var($num, FILTER_VALIDATE_INT)) {
echo "Valid integer";
}
// Validate IP address
$ip = "192.168.1.1";
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "Valid IP";
}
// Sanitize - remove dangerous characters
$dirty = "<script>alert('xss')</script>Hello";
$clean = htmlspecialchars($dirty, ENT_QUOTES, 'UTF-8');
echo $clean; // <script>alert('xss')</script>Hello
?>
Explore 500+ free tutorials across 20+ languages and frameworks.