Forms are a vital part of web applications, enabling user interaction and data submission. This lesson covers handling form submissions using PHP, differentiating between GET and POST methods, and securing user input through validation and sanitization.
8.1 GET vs POST
What are GET and POST Methods?
Both GET and POST are HTTP request methods used to send data from a client (browser) to a server.
GET Method
- Data is sent in the URL.
- Advantages:
- Can be bookmarked or shared.
- Useful for non-sensitive data like search queries.
- Disadvantages:
- Limited amount of data (URL length restrictions).
- Data is visible in the URL, not suitable for sensitive data.
- Example:
php
<form method="GET" action="process.php">
<input type="text" name="username">
<input type="submit">
</form>
URL after submission:
process.php?username=value
POST Method
- Data is sent in the HTTP request body.
- Advantages:
- Secure for sensitive data (passwords, personal information).
- No limit on data size.
- Disadvantages:
- Cannot be bookmarked or shared.
- Example:
php
<form method="POST" action="process.php">
<input type="text" name="username">
<input type="submit">
</form>
Handling GET and POST Data in PHP
- Using
$_GET
:php<?php
if (isset($_GET['username'])) {
echo "Username: " . htmlspecialchars($_GET['username']);
}
?>
- Using
$_POST
:php<?php
if (isset($_POST['username'])) {
echo "Username: " . htmlspecialchars($_POST['username']);
}
?>
8.2 Form Validation
Why Validate Forms?
- Ensures data integrity and security.
- Prevents malicious input, such as SQL injection or XSS attacks.
- Enhances user experience with immediate feedback.
Common Validation Rules
- Required Fields: Ensure that critical fields are not left empty.
- Data Type Validation: Check if the input matches the expected format (e.g., email, number).
- Length Validation: Limit the number of characters.
- Custom Rules: Define application-specific rules (e.g., password complexity).
Example: Validating Required Fields
php
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = trim($_POST['name']);
$email = trim($_POST['email']);
if (empty($name)) {echo “Name is required.<br>”;
}
if (empty($email)) {echo “Email is required.<br>”;
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo “Invalid email format.<br>”;
}
}
?>
<form method=“POST” action=“”>
Name: <input type=“text” name=“name”><br>
Email: <input type=“text” name=“email”><br>
<input type=“submit”>
</form>
8.3 Sanitizing and Validating Input
Sanitization vs Validation
- Sanitization: Cleans input by removing unwanted characters (e.g., HTML tags, special characters).
- Validation: Ensures input meets specific criteria (e.g., correct email format).
Sanitizing Input
PHP provides the filter_var()
function for sanitization.
php
<?php
$dirty_email = "<script>alert('Hack!')</script>user@example.com";
$clean_email = filter_var($dirty_email, FILTER_SANITIZE_EMAIL);
echo $clean_email; // Outputs: user@example.com
?>
Validating Input
PHP provides several filters for validation.
php
<?php
$email = "user@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {echo “Valid email.”;
} else {
echo “Invalid email.”;
}
?>
Combining Sanitization and Validation
php
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {echo “Valid email: $email“;
} else {
echo “Invalid email format.”;
}
}
?>
<form method=“POST” action=“”>
Email: <input type=“text” name=“email”><br>
<input type=“submit”>
</form>
Validating Multiple Inputs
php
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars(trim($_POST['name']));
$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
$age = filter_var(trim($_POST['age']), FILTER_SANITIZE_NUMBER_INT);
if (empty($name)) {echo “Name is required.<br>”;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {echo “Invalid email format.<br>”;
}
if ($age < 1 || $age > 120) {echo “Invalid age.<br>”;
}
}
?>
<form method=“POST” action=“”>
Name: <input type=“text” name=“name”><br>
Email: <input type=“text” name=“email”><br>
Age: <input type=“number” name=“age”><br>
<input type=“submit”>
</form>
Activities and Exercises
- GET vs POST:
- Create a form with GET and POST methods to submit a username. Display the username after submission.
- Form Validation:
- Build a form with fields for name, email, and age. Validate all fields to ensure they are filled correctly.
- Sanitization and Validation:
- Write a script that accepts a URL input, sanitizes it, and validates if it is a valid URL.
Assignment
- Create a PHP script with a form to collect:
- Full Name
- Email Address
- Age
- Phone Number
- Implement:
- Validation rules:
- Name and email are required.
- Email must be in a valid format.
- Age must be a number between 1 and 120.
- Phone number must contain only digits and be 10–15 characters long.
- Sanitization for all inputs.
- Validation rules:
- Display:
- Error messages for invalid inputs.
- A success message and the sanitized data if all inputs are valid.
Summary
In this lesson, you learned how to:
- Differentiate between GET and POST methods.
- Handle and validate form data in PHP.
- Sanitize user inputs to secure your application.
These skills are critical for building secure and user-friendly web applications. Let me know if you’d like further clarification or examples!
Leave a Reply