PHP Data Sanitization & Validation – Secure User Input 🛡️
Imagine you’re running a website where users enter their name and email. What if someone enters <script>alert('Hacked!')</script> instead? 😱
This is why data sanitization and validation are crucial. Let’s make sure your PHP forms accept only clean and valid data! ✅
🚀 What is Data Sanitization?
Sanitization is the process of cleaning user input by removing or encoding harmful characters. This prevents SQL injection, XSS attacks, and broken application behavior.
✅ Example: Using filter_var() for Sanitization
Let’s sanitize a user’s email input.
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
echo "Sanitized Email: " . $email;
}
?>
🔒 Why is this secure? It removes unwanted characters like spaces and dangerous symbols from email input.
🚦 What is Data Validation?
Validation checks if the input meets specific criteria, like:
- 📧 Is it a valid email?
- 📞 Is it a proper phone number?
- 🔢 Is it a number?
✅ Example: Validating an Email
Here’s how to verify if an email is valid:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Valid Email: " . $email;
} else {
echo "Invalid Email!";
}
}
?>
🎯 Key Difference: FILTER_SANITIZE_EMAIL cleans the email, while FILTER_VALIDATE_EMAIL checks if it’s actually valid.
🔢 Validating Numbers
Ensure a user enters a valid integer:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$age = $_POST['age'];
if (filter_var($age, FILTER_VALIDATE_INT)) {
echo "Valid Age: " . $age;
} else {
echo "Invalid Age!";
}
}
?>
✅ Best Practice: Always validate numeric input before using it in calculations.
📞 Validating Phone Numbers
Let’s allow only numbers and dashes in a phone number:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$phone = filter_var($_POST['phone'], FILTER_SANITIZE_NUMBER_INT);
echo "Sanitized Phone: " . $phone;
}
?>
🔒 Why is this useful? It removes letters and unwanted symbols, keeping only numbers.
💬 Removing HTML Tags
To strip HTML tags from user input:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$comment = strip_tags($_POST['comment']);
echo "Clean Comment: " . $comment;
}
?>
🛡️ Why use this? Prevents users from injecting malicious scripts into comments.
🎯 Best Practices for Secure Data Handling
- ✅ Always sanitize input before storing it.
- ✅ Validate data before using it in logic.
- ✅ Use
htmlspecialchars()when displaying user input. - ✅ Escape special characters when working with databases.
🚀 Next Steps
Try modifying the examples and experimenting with different inputs. Secure your PHP applications today! 💪