Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи

10 0 Новини високих технологій

Форми відіграють важливу роль при проектуванні веб-ресурсів. Вони дозволяють вводити і змінювати дані. Через форми може чинити шкідливий код або свідомо помилкова інформація. Створення коректних форм і правильне їх функціонування - комфорт для відвідувача і стабільна робота веб-ресурсу.

Форми HTML і реальні завдання

Форми HTML присутні на кожному сайті за рідкісним винятком. З допомогою тега form можна надати користувачу можливість вводити і змінювати дані. Найпопулярніший тег - input - служить для введення рядків, паролів і передачі прихованих даних. Тег select дає можливість вибору елемента зі списку. Також можна встановлювати перемикачі, робити множинний вибір позицій і передавати файли.


Невелика кількість внутрішніх тегів form, різноманіття їх атрибутів і варіантів застосування дає можливість описувати складні структури даних. Поняття, призначення та фактична обробка форми на PHP визначаються розв'язуваної завданням. Конструювання форми - складний процес, а забезпечення повного вирішення поставленої задачі займає багато часу: зовнішня простота тега форми на практиці досить трудомістка в реалізації. Всі елементи форми можуть бути оформлені стилями CSS, на них можуть бути призначені обробники подій javascript. Програміст може надати відвідувачу алгоритм руху по полям форми.
Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
По суті, поняття форми залежить від предметної області. Наприклад, для сайту бухгалтерії будуть створені форми первинних документів, звітів для податкової, розрахункових листків по зарплаті Взаємозв'язок форми і реального документа визначається призначенням останнього.


Зокрема, введення первинного документа - це:
  • найменування;
  • кількість;
  • вартість товару.
  • Інші поля (постачальник, дата поставки, одиниці виміру, юридичні реквізити тощо) можуть бути заповнені автоматично, як частина алгоритму автозаповнення полів - сучасний і затребуваний прийом програмування. Розрахунковий листок по зарплаті може зажадати введення (корекції) тільки одного поля нарахованої суми (якщо її потрібно уточнити поза основного розрахунку). Інші поля розраховуються за єдиним алгоритмом для всіх співробітників. У кожному конкретному випадку форма містить тільки ті елементи, які підлягають заповненню або зміни.

    Приклад використання елементів форми

    У наведеному прикладі використано текстове поле для введення імені відвідувача, приховане поле для введення пароля елемент списку і два варіанти вибору:
  • один з багатьох (radio);
  • кілька з багатьох (checkbox).
  • Ця форма носить формальний характер. Її мета - показати, наскільки просто створити можливість введення/зміни даних на будь-якому сайті. При цьому в формі присутній прихований елемент, який не вводиться і не змінюється, але дозволяє передавати важливу інформацію.
    Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
    Форми HTML відносяться до самодостатнім елементів і працюють самі по собі. Правильно їх описати і використовувати на практиці дуже непросто. Як правило, зміна форми (додавання або видалення полів) пов'язане з численними змінами в коді. Важливо відразу визначити зміст та кількість потрібних полів з тим, щоб не було потреби щось змінювати або доповнювати згодом.

    PHP код опису форми

    Наведений приклад форми описаний наступним кодом. Опис CSS не мають особливого значення і не наводяться нижче. Показаний тільки код самої форми. Тут дані форми PHP відправляє методом POST сторінки 'index.php', на якій розташована сама форма.
    Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
    Поля імені користувача і пароля на вхід повинні заповнюватися правильно. Можливість введення неправдивої інформації повинна бути виключена спочатку. Для цього в коді форми передбачено використання зміни кольору символів полів червоний в разі помилки: echo $cNameTest і echo $cPassTest. Ці змінні визначаються на початку HTML-сторінки.
    Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
    Тут в секції HEAD (1) виконана вставка операторів, що визначають наявність у масиві $_POST значень полів форми cName і cPass. Потім перевіряється правильність введення потрібних значень функції (2) і (3). Якщо користувач помилився, і ввів неправильно ім'я користувача або пароль, то відповідні поля форми змінюють колір на червоний. Функції перевірки chStrText() і chStrPass() не є ідеальними - це приклад. На реальній практиці важливо не тільки змінити колір і показати відвідувачеві його помилки, але і зробити адекватні дії. Слід особливо відзначити тег input з типом hidden (ім'я cCode). Обробка даних форм на PHP - це не тільки видима або заповнюється інформація. Часто в процесі введення даних необхідно формувати прихований текст, який має значення. В даному випадку не важливо, що помістить програміст значення cCode; важливо, що має значення для рішення поставленого завдання.

    Співвідношення HTML і PHP

    PHP функціонує на сервері. Як серверний мова, PHP в обробці форм може приймати тільки «формує» участь: програміст пише код створення форми або заповнення її полів, коли форма описана тегами HTML. PHP може приймати вирішальне участь, коли потрібно обробити дані, введені відвідувачем. Активація роботи PHP відбувається при оновленні сторінки: після заповнення форма відправляє методом POST (іноді, методом GET) дані самій собі. Тобто, значення атрибута action тега form ім'я сторінки, на якій форма записана. В деяких випадках правило обробки форми на PHP вимагає окремої сторінки, іноді - невидимою. Це дуже зручний метод. Наприклад, реєстрація або вхід зареєстрованого відвідувача пов'язаний із запитом до бази даних.
    Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
    У цьому випадку розробляється три сторінки (як варіант). Вихідний файл index.php (index.html) містить форму входу (реєстрації). Файл перевірки CheckUser.php - це готова форма на PHP для роботи з БД (таблиці і тільки. CheckUser.php тільки перевіряє наявність відвідувача, ніякого висновку у браузер не робить. У разі успішного входу завантажується основна робоча сторінка, і користувач входить на сайт. В разі проблем: немає такого користувача або у реєстрації відмовлено, і процес повертається назад на сторінку index.php (index.html).

    Робота з сервером по AJAX

    В деяких випадках обробка форми на PHP через оновлення сторінки - єдиний варіант. Коли користувач увійшов на сайт і приступив до роботи, доцільно виконувати перевірку полів форми на льоту за допомогою javascript. Призначаючи обробника події полів форми (вхід в полі, вихід з поля, натискання клавіші, коли фокус знаходиться в полі), можна формувати дані для подальшої обробки. Після того, як дані підготовлені, і відвідувач натискає на кнопку передачі даних.

    Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
    В цьому прикладі є форма входу. І є два елемента HTML, які до формі ніяк не відносяться, але клік на них викликає запуск функції, що приховує форму або функції, яка читає поля і відправляє їх на сервер для перевірки. В даному випадку поставлено завдання забезпечити вхід з одного браузера різним працівникам без перезавантаження ресурсу. Ресурс повинен працювати постійно, а працівники змінюються. Використання форми PHP і AJAX - найбільш зручне рішення.

    Валідація форми HTML

    Відвідувач сайту може помилятися, а може свідомо намагатися нанести шкоду. У будь-якому разі розробник повинен передбачити всі варіанти поведінки відвідувача. Найпростіше правило при створенні форм - дозволити лише допустимої інформації. Не завжди виправдане використання регулярних виразів, як у прикладі з функціями chStrTest() і chStrPass(), але завжди виправдано вимога точно встановити набори допустимих символів/зміну полів даних або ймовірний набір значень.
    Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
    Ідеально - надати відвідувачеві можливість заповнювати форму за допомогою списків допустимих значень, але у більшості випадків цього зробити просто неможливо. Виконувати на PHP обробку HTML-форми безпосередньо в момент введення можливо, але це зумовить навантаження на обмін даними за допомогою AJAX. Практика і досвід розробки форм дозволяє зробити висновок: розумне поєднання можливостей javascript (перевірка вводу даних в браузері) і можливостей PHP (обробка даних на сервері) - найкраще рішення.

    Жорсткі конструкції і трудомісткість

    HTML - це «звід» формальних правил. Опис тегів вимагає участі таблиць CSS. Описавши елементи форми через ідентифікатори, можна втратити можливість прямого доступу до полів форми через javascript. Використовуючи опис через класи, можна мати більшу свободу. Дати чіткі вказівки практично неможливо, усі ситуації унікальні, але осмислення і використання вмінь і знань колег завжди дозволяє максимально швидко і ефективно виконати роботу.
    Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
    Створити динамічно формується форму для введення даних складно. Зазвичай робота з формами на PHP зводиться до формалізації даних і формування жорсткої конструкції мовою сервера або тегами HTML. У будь-якому варіанті рішення слід будувати максимально зручно для цілей можливої зміни. Опис, валідація та обробка форми записуються в різних частинах сторінки, використовуються файли CSS і можуть бути використані файли описів об'єктів. У всіх випадках опис і обробка форми на PHP повинні бути по можливості комментированы і зрозуміло сформульовані. Якщо заздалегідь передбачити варіант зміни кількості полів, дизайну, розміщення і обробки, то це зробить супровід виконаної роботи простим і швидким.

    Завжди тільки одна форма

    У процесу використання форм є один кардинальний недолік: «завжди треба мати два варіанти однієї форми.
    Обробка форми PHP: поняття, інструкція з обробки, правила і методи роботи
    Перший варіант - це введення/редагування даних. Другий варіант - це форма після валідації введення. Навіть коли на javascript реалізований функціонал перевірки кожного поля на льоту, обробка форми на PHP може дати негативний результат і буде потрібно запропонувати відвідувачу виправити неправильно зазначені дані. Вивести дані в форму не вийде, бо треба показати відвідувачеві, що потрібно виправити, а отже, вихідна форма повинна бути представлена в дещо іншому варіанті. Негласне загальне правило програмування - «всі завжди точно в одному місці і в одному екземплярі» до форм має саме пряме відношення. Всяка форма повинна створюватися універсальної, з розрахунком, що при її обробці були виявлені помилки. Просто в початковий момент часу у формі їх немає. Тільки в такому випадку не буде оказії при початковому введенні даних та повторного введення - після виправлення помилок.

    Правила і методи роботи з формою

    Будь-яка практична задача вирішувалася до створення сайту. Розробка веб-ресурсу та проектування необхідного набору форм - це формалізація процесу обробки інформації, який існував до того, як програміст приступив до розробки. З цієї точки зору при створенні будь-якої форми важливий людський фактор. Місце розташування, функціонал і робота форми повинна бути безумовно інтуїтивно зрозуміла будь-якому відвідувачу взагалі або спеціаліста, якщо мова йде про створення професійного спеціалізованого ресурсу. Людський фактор - це перший критерій. Простота форми і її обробки - другий істотний аспект. Унікальний код форми в одному примірнику, розрахований на початковий enter і на виправлення допущених помилок - третій критерій.

    Природні дані і формальний опис

    Ситуація з формами завжди відрізнялася простотою у використанні тегів HTML і реальними труднощами в їх застосуванні на практиці. Природна інформація динамічна, будь-яка предметна область і її функціонування не стоять на місці. Чим масивніше форма HTML, тим складніше її створити, використовувати і обробити на PHP. Трудомісткість часом зашкалює при проектуванні форм, а особливо при їх зміні, тестуванні та розвитку. Знання та вміння покращують ситуацію і дозволяють створювати хороші, якісні форми для введення даних. Дотримуючись саме елементарне правило: максимум простоти і мінімум полів, можна створити хороший код та забезпечити якісну обробку даних.