Універсальний обробник форм на php своїми руками - блог про веб-програмуванні

Практично у всіх фреймворками реалізована дуже зручна робота з формами, що дозволяє легко зробити валідацію даних, що вводяться. А що, якщо проект не настільки великий, щоб використовувати цілий фреймворк, але форми для введення даних все одно хочеться перевіряти. Сьогодні я хочу показати, як на php можна написати досить універсальний клас валідації даних.

І так, завдання наступна: необхідно перевірити відповідність даних, введених в форму деяким правилам. У разі помилок розставити повідомлення про помилки, а також забезпечити збереження даних у формі. Обробка форми і формування її коду має відбуватися в різних скриптах, тому необхідно використовувати сесії.

Для початку напишемо кістлявість форми, над якою ми будемо проводити експерименти:

Для вирішення нашої задачі я напишу простенький клас. Суть його роботи зводиться до наступного: забезпечити перевірку відповідності значень, введених в форму, певним правилам, зберегти в сесію повідомлення про помилки, зберегти вже введені дані, щоб користувачеві не доводилося вводити повторно ті дані, які він ввів вірно. Для зручності кожній формі ми призначаємо ім'я. Оскільки ми заздалегідь не знаємо, як перевіряти яке поле форми, ми використовуємо потужний інструмент, наявний в php - тип даних callable.

Код даного класу збережіть в form.php. Тепер визначимо похідний клас, який вже буде представляти нашу форму. Назвемо його UserForm. Оскільки цей клас буде використовуватися в двох файлах -
в скрипті генерації форми і в скрипті перевірки введених значень, запишемо його теж в окремий файл, наприклад, user_form.php.

Збережіть цей код в файл під назвою, наприклад, user.php. Тепер напишемо код файлу process.php. Завдяки тому, що більшу частину роботи ми вже зробили, він буде зовсім простий:

У висновку напишемо останній файл нашого невеликого додатки, hello.php. В даному випадку, він зовсім простий:

Примітка: Значну частину функціоналу класу Form реалізує стандартна функція php filter_input_array. проте даний клас, крім власне контролю даних, реалізує також висновок помилок і збереження введеної інформації в сесію.

Схожі статті