Взаємодія браузера і сервера на прикладі GET і POST запитів. Обробка форм.

  1. Зміст файлу index.php:

23 Січень, 2014 - 02:30

Отже, якщо у вас вже встановлений на комп'ютері локальний сервер (Дістрібьютів Денвер) і ви навчилися писати найпростіші програми на PHP, то саме час дізнатися, яким чином браузер (клієнт) може робити серверу запити і отримувати відповідні відповіді. На прикладі створення простої HTML-форми ми вивчимо основні принципи такої взаємодії.

Якщо ви вже добре розбираєтеся в каталогах Денвера, то можете створити будь-який PHP-файл в зручній для вас директорії і приступити безпосередньо до написання коду. Для тих, хто ще не впевнений в своїх силах, раджу вчинити так: на віртуальному диску з Денвером (зазвичай це Z) в папці home створіть папку lessons. Далі, в цій папці створіть ще одну папку - www. Це ваша робоча папка проекту, яка буде доступна з рядка адреси браузера. Перезавантажте Денвер, щоб створений хост прописався в системі. Нарешті, в папці www створіть файл index.php. Це і буде основною файл з вашим кодом.

Зміст файлу index.php:

Як бачите - це звичайна HTML-розмітка, однак ми назвали файл index.php, а це значить, що тепер в документ ми можемо вставляти будь-які інструкції на мові PHP.

Якщо ви тепер зайдете в браузері за адресою http: // lessons / , То побачите такий результат:

Заповніть поля (наприклад: ім'я - Вася, рік народження - 1990) і натисніть на кнопку "відправити". Що ви бачите? А нічого! Знову та ж форма, тільки порожня. Однак не поспішайте засмучуватися - погляньте на адресний рядок браузера. Вона змінилася і тепер виглядає приблизно ось так:

http: //lessons/index.php? user_name = Вася & user_year = 1990 & submit_form = відправити

А це означає, що сервер все-таки отримав ваші дані!

Давайте тепер розберемося.

По-перше, що взагалі таке HTML-форма? Це інтерфейс, що дозволяє відправляти будь-які дані з браузера клієнта на сервер. Погляньте на атрибути вашої форми:

<Form action = "index.php" method = "GET">

Атрибут action відповідає за адреса одержувача даних, що відправляються. У нашому випадку форма відправляється на ту ж адресу, тобто на lessons / index.php.

Особливу увагу заслуговує атрибут method, який визначає метод відправки запиту на сервер. Таких методів кілька, а найбільш поширені (і практичні) це методи GET і POST. Зараз нас буде цікавити метод GET.

GET-запит означає, що дані будуть передаватися на сервер безпосередньо через адресний рядок. Ви в цьому вже переконалися, відправивши форму - до рядка адреси додалися певні дані. Звідки ці дані беруться? Зверніть увагу на теги input в HTML-формі. У всіх їх присутній атрибут name, який встановлює ім'я даного поля.

При методі GET до основної адреси додається символ "?" (Знак питання), щоб сервер розумів, що надійшли якісь дані. Після символу "?" йдуть безпосередньо самі дані у вигляді ім'я = значення. Якщо таких даних кілька, то вони поділяються між собою символом об'єднання "&". Надішліть форму з іншими значеннями полів і переконайтеся в цьому.

Гаразд, дані вирушили. Що далі? Куди вони пішли і що з ними робити? Ось тут і починається найцікавіше.

Прийшов час навчитися "ловити" і обробляти отримані дані. З огляду на те, що атрибут action вказує на поточний файл index.php, значить дані надходять саме сюди, тому в цьому ж файлі ми і пропишемо код обробки GET-запиту.

Отже, відразу ж після тега <body> додамо такий PHP-код:

Збережіть файл, знову зайдіть на http: // lessons / , Відправте форму і - о, диво! - Що ви бачите?

Тільки що, після відправки форми, сервер отримав і опрацював отримані дані і надіслав в браузер свою відповідь!

Розглянемо PHP-код нашого проекту, який представляє собою умову:

if (isset ($ _ GET [ 'submit_form'])) {}

Сервер перевіряє, а отримана змінна GET-запиту з ім'ям submit_form? Тобто, кажучи простіше, а чи була взагалі відправлена ​​форма? Якщо це так, то серверний php-код відправляє прямо в браузер користувача нову HTML-розмітку зі своєю відповіддю, використовуючи для цього оператор echo. Якщо ви уважно вивчите написаний код-обробник, то вам відразу все стане зрозумілим!

Цікавий ж цей метод GET! Змініть адресний рядок, наприклад, на таку:

http: //lessons/index.php? user_name = Моє-ім'я & user_year = 1900 & submit_form = відправити

і натисніть кнопку "Введення". Сервер знову вам відповість, прийнявши вже інші дані! Думаю, з цим все зрозуміло.

Недоліки GET-методу в тому, що, по-перше, є обмеження на обсяг переданих даних, а по-друге, цей метод є відкритим і будь-яку інформацію можна перехопити. Тому особисті дані користувача (логін, ім'я, пароль та ін.) Ніколи не можна передавати через рядок адреси.

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

Змініть ваш файл, замінивши в PHP-коді імена змінних $ _GET на $ _POST, а в формі пропишіть method = "POST". Оновлення сторінку і знову відправте форму. Результат буде таким же, що і при методі GET, однак адресний рядок залишилася без змін, а це значить, що дані були благополучно відправлені в захищеному вигляді в тілі самого запиту.

Для закріплення матеріалу створимо маленьке веб-додаток, що буде запитувати логін і пароль користувача для входу на сайт. Код прикладу буде відносно складним і від вас потрібна увага і бажання розібратися в функціоналі PHP-програми.

Отже,

Файл index.php:

Запустіть приклад і подивіться, що відбувається. Спочатку запитується логін і пароль користувача (в коді ми визначили їх як "admin" і "secret"), якщо все вірно - ми потрапляємо на головну сторінку сайту, якщо дані невірні - виводиться відповідне попередження.

Розглянемо реалізацію даної технології.

Зверніть увагу - весь код HTML-форми ми не виводимо безпосередньо, а запам'ятовуємо в змінній $ form.

Будьте уважні з лапками! Весь HMTL-код знаходиться всередині одинарних лапок, тому його внутрішні лапки повинні бути подвійними. Якби ви написали

$ Form = "... ваш код ...",

то внутрішній код міститиме навпаки - одинарні лапки.

Далі, в рядку 27 перевіряється, чи була відправлена ​​форма (умова 1 на рис.), Якщо немає - виводиться HTML-форма, і сценарій припиняє свою роботу - функція die (). Більше нічого, крім форми в браузер не виводиться.

Якщо дані були отримані, то перевіряються POST-змінні на відповідність заданим (умова 2 на рис.). Якщо вони не збігаються, то виводиться попередження, HTML-форма для входу і сценарій знову припиняє роботу (die ()).

Якщо ж друга умова виконується, то скрипт пропускає всі оператори else і переходить на відображення головної сторінки. (Перехід 3 на рис.).

Це найпростіший приклад. Природно, в реальних проектах таких прямих перевірок не проводиться - логін і пароль в зашифрованому вигляді зберігаються в файлах або базі даних. Тому в статті описана сама технологія взаємодії клієнта і сервера на основі GET і POST запитів. Для створення повноцінних додатків вам необхідно мати тверді знання по базах даних і об'єктно-орієнтованого програмування. Про це - в наступних статтях.

23 Січень, 2014 - 02:30   Отже, якщо у вас вже   встановлений на комп'ютері локальний сервер   (Дістрібьютів Денвер) і ви навчилися писати найпростіші програми на PHP, то саме час дізнатися, яким чином браузер (клієнт) може робити серверу запити і отримувати відповідні відповіді

Що ви бачите?
Php?
По-перше, що взагалі таке HTML-форма?
Звідки ці дані беруться?
При методі GET до основної адреси додається символ "?
Після символу "?
Що далі?
Куди вони пішли і що з ними робити?
Що ви бачите?
Тобто, кажучи простіше, а чи була взагалі відправлена ​​форма?