Курс — «Программирование на PHP8 для начинающих» — #17 Обработка данных из форм. Валидация и фильтрация данных
Здравствуйте, дорогие друзья.
Валидация и фильтрация данных являются критически важными аспектами обработки данных из форм. Они помогают обеспечить безопасность, корректность и целостность данных, поступающих от пользователей. В этом разделе мы рассмотрим, как выполнять валидацию и фильтрацию данных в PHP.
Валидация данных
Валидация данных включает проверку введенных пользователем данных на соответствие определенным критериям. Это может включать проверку на пустоту, проверку формата, проверку диапазона значений и многое другое.
- Проверка на пустоту:
1 2 3 4 5 |
<?php if (empty($_POST['name'])) { die("Name is required."); } ?> |
2. Проверка формата email:
1 2 3 4 5 |
<?php if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { die("Invalid email format."); } ?> |
3. Проверка длины строки:
1 2 3 4 5 |
<?php if (strlen($_POST['password']) < 8) { die("Password must be at least 8 characters long."); } ?> |
4. Проверка числового диапазона:
1 2 3 4 5 |
<?php if ($_POST['age'] < 18 || $_POST['age'] > 65) { die("Age must be between 18 and 65."); } ?> |
5. Проверка на наличие только букв и цифр:
1 2 3 4 5 |
<?php if (!ctype_alnum($_POST['username'])) { die("Username must contain only letters and numbers."); } ?> |
Фильтрация данных
Фильтрация данных включает очистку и преобразование данных для обеспечения их безопасности и корректности. Это может включать удаление нежелательных символов, экранирование специальных символов и преобразование данных в безопасный формат.
- Удаление пробелов:
1 2 3 |
<?php $username = trim($_POST['username']); ?> |
2. Экранирование специальных символов:
1 2 3 |
<?php $message = htmlspecialchars($_POST['message']); ?> |
3. Фильтрация чисел:
1 2 3 4 5 6 |
<?php $age = filter_var($_POST['age'], FILTER_VALIDATE_INT); if ($age === false) { die("Age must be a valid integer."); } ?> |
4. Фильтрация URL:
1 2 3 4 5 6 |
<?php $url = filter_var($_POST['url'], FILTER_VALIDATE_URL); if ($url === false) { die("Invalid URL format."); } ?> |
5. Фильтрация IP-адреса:
1 2 3 4 5 6 |
<?php $ip = filter_var($_POST['ip'], FILTER_VALIDATE_IP); if ($ip === false) { die("Invalid IP address format."); } ?> |
Пример полного цикла валидации и фильтрации данных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Contact Form</title> </head> <body> <form action="process_form.php" method="post"> <label for="name">Name:</label> <input type="text" id="name" name="name" required><br><br> <label for="email">Email:</label> <input type="email" id="email" name="email" required><br><br> <label for="message">Message:</label> <textarea id="message" name="message" required></textarea><br><br> <input type="submit" value="Submit"> </form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php // process_form.php if ($_SERVER["REQUEST_METHOD"] == "POST") { // Валидация и фильтрация имени $name = trim($_POST['name']); if (empty($name)) { die("Name is required."); } // Валидация и фильтрация email $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); if ($email === false) { die("Invalid email format."); } // Валидация и фильтрация сообщения $message = htmlspecialchars(trim($_POST['message'])); if (empty($message)) { die("Message is required."); } echo "Name: " . $name . "<br>"; echo "Email: " . $email . "<br>"; echo "Message: " . $message . "<br>"; } ?> |
Пример валидации и фильтрации данных для загрузки файлов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>File Upload Example</title> </head> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Choose a file:</label> <input type="file" id="file" name="file" required><br><br> <input type="submit" value="Upload"> </form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php // upload_file.php if ($_SERVER["REQUEST_METHOD"] == "POST") { // Валидация загруженного файла if (!isset($_FILES['file']) || $_FILES['file']['error'] != UPLOAD_ERR_OK) { die("File upload failed."); } // Фильтрация имени файла $uploadDir = "uploads/"; $uploadFile = $uploadDir . basename($_FILES['file']['name']); // Валидация типа файла $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; $fileType = mime_content_type($_FILES['file']['tmp_name']); if (!in_array($fileType, $allowedTypes)) { die("Invalid file type."); } // Перемещение загруженного файла if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) { echo "File is valid, and was successfully uploaded.\n"; } else { die("Failed to move uploaded file."); } } ?> |
Валидация и фильтрация данных являются критически важными аспектами обработки данных из форм. Они помогают обеспечить безопасность, корректность и целостность данных, поступающих от пользователей, что делает веб-приложения более надежными и защищенными
На этом все. Всем хорошего дня!
Цикл статей по курсу — «Программирование на PHP8 для начинающих».