POST і GET запити простими словами. Як відправити post запит з браузера: метод пост Мінлива post в php приклади використання
У цьому уроці ми розглянемо загальні прийоми передачі даних між формами і сторінками. Такими методами є POST і GET. Про кожний ми поговоримо окремо і більш детально. Взагалі кажучи, це потрібно для зв'язку між формами. Наприклад ми заповнюємо якісь поля на сторінці і нам потрібно їх передати в іншу сторінку для обробки.
Метод GET в PHP
Для початку розберемо метод GET. Це коли всі змінні і їх значення передаються прямо через адресу. Зараз на прикладі ви все побачите, і навіть зрозумієте як працює більшість сайтів і форумів. Наприклад, є у нас html сторінка такого виду:
Сторінка з прикладом передачі змінних за допомогою Get
посилання
Бачите посилання? Вона складна і складається з декількох частин. Давайте розберемо все по поличках: https: // сайт - адреса домену або, як його ще називають, хост. index.php - сторінка на php, яка буде обробляти запит. ?
- символ поділу між адресою та блоком зі змінними. Далі йдуть змінні і їх значення, які розділені символом &
. name \u003d Sergey - змінна name і її значення Sergey. age \u003d 22 - те ж саме, змінна age, значення 22.
Все розібрали, тепер подивимося як це обробляється в php, за допомогою методу GET. Сторінка index.php, як ви пам'ятаєте, ми передавали їй:
Для початку рада: ЗАВЖДИ перевіряйте змінні на правильність: на порожнечу, на відповідність допустимих значень і так далі. Так як все передається через адресний рядок, то дані можна легко підмінити і нашкодити сайту. Тепер по самому коду: ми, за допомогою, перевірили змінні name і age на порожнечу і, якщо вони не порожні, то вивели їх, а якщо порожні, то просто повідомили про це. Все просто, погодьтеся? Наприклад ви можете створити html сторінку і в менюшке зробити посилання через змінні, а в index.php обробляти змінну і відображати в залежності від отриманого значення ту чи іншу сторінку. Ну про це ми поговоримо пізніше, в статті про створення сайту на php з нуля. Щоб нічого не пропустити, раджу підписатися на RSS.
Метод POST в PHP
Для демонстрації роботи цього методу нам знадобиться трохи більше, ніж проста рядок з адресою :) Потрібно буде створити html сторінку з формою для заповнення, але нічого, я приведу готовий приклад для вас:
Сторінка з прикладом передачі змінних за допомогою Post
Отже, ми створили html сторінку з простою формою. Запам'ятайте, метод POST може використовуватися тільки в формі. Перший параметр форми - «method», він визначає метод, який ми будемо використовувати для передачі. Як ви могли здогадатися, це або GET, або POST. При цьому, якщо встановлений GET, то всі імена полів (у вигляді назв змінних), а також їх значення, передаються по посиланню, як в розділі про метод GET. Якщо ж встановлено POST, то все назви змінних і значення будуть передаватися як запит браузера до веб-сервера. Тобто в адресному рядку їх видно не буде. У багатьох випадках це дуже корисно. Також POST безпечніше, воно і зрозуміло, адже змінні з їх значеннями вже не так просто відредагувати, хоча теж можна.
Другий параметр форми - «action». Це шлях і ім'я файлу скрипта, якого ми передаємо дані. У нашому випадку це index.php. Цей шлях можна передавати і повністю, тобто так: action \u003d "https://my_site.ru/index.php». Якщо не вказати значення параметра «action», то вся інформація буде передаватися головному скрипту, тобто контрольного аркуша index.php вашого сайту, що цілком логічно.
Тепер отримаємо дані з нашої форми. Раз передавали ми в index.php, значить нижче буде код саме цієї сторінки:
"; Echo" ім'я - "; echo $ _POST [" user_name "]; echo" вік - "; echo $ _POST [" age "]; echo" років ";) else (echo" Змінні не дійшли. Перевірте все ще раз. ";)?\u003e
Не забуваємо перевіряти на порожнечу і допустимі значення. Далі потрібно уточнити, чому наші змінні називаються саме user_name і age? А ви подивіться на поля форми, яку ми створювали вище. бачите там input name \u003d "user_name» type \u003d «text» ? Ось тут параметр name і задає ім'я змінної, яку ми отримаємо за допомогою цього поля. Те ж саме і з age. Сподіваюся зрозуміло. Ну а отримання змінної і її значення через POST майже не відрізняється від GET, який ми розглянули вище.
Ну ось, урок вийшов великий, але зате один з найкорисніших, адже передача змінних між формами і сторінками це саме та інтерактивність, заради якої ми і використовуємо PHP.
Ви могли помітити, що на більшість сайтів можна споглядати ось такі адреси:
Http: //сайт/index.php? Blog \u003d 2
Тут, навіть не знаючи php, можна здогадатися, що ми звертаємося до файлу index.php Але те, що йде після знака питання, мало хто знає. Все досить просто: ? Blog \u003d 2 це оголошення глобальної змінної «$ _GET [" blog "]» з значенням «2». Таким чином я в скрипт передаю змінну яка відповідає за виведення інформації з бази даних. Давайте напишемо невеликий скрипт в якому Ви все наочно побачите:
if (isset ($ _ GET [ "blog"])) ( echo $ _GET [ "blog"]; } ?>
Ми використовуємо оператор умов if () в якості умови варто ось такий рядок:
Isset ($ _ GET [ "blog"])
isset () дозволяє дізнатися чи існує змінна яка вказана в дужках, тобто умова яке я описав в коді звучить так: Якщо існує змінна $ _GET [ "blog"] то вивести вміст цієї змінної на екран. Ось що вийшло:
Думаю зрозуміло Створюється глобальна змінна $ _GET з ідентифікатором який ми оголосили в адресному рядку ( в даному випадку з ідентифікатором «blog»)
Тепер хочу пояснити один момент. Припустимо нам необхідно оголосити дві змінні, як це зробити? Перша змінна оголошується після знака питання «?» Друга ж змінна оголошується після такого знака «&» ( Якщо чесно не знаю що це за знак ), Ось приклад оголошення трьох змінних:
Http: //сайт/index.php? A \u003d 1 & b \u003d 2 & c \u003d 3
Ось код виведення:
if (isset ($ _ GET [ "a"]) AND isset ($ _ GET [ "b"]) AND isset ($ _ GET [ "c"])) ( echo $ _GET [ "a"]. " "; echo $ _GET [ "b"]. " "; echo $ _GET [ "c"]. " "; } ?>
Умова звучить так:
Якщо існує глобальна змінна $ _GET [ "a"] і глобальна змінна $ _GET [ "b"] і глобальна змінна $ _GET [ "з"] то вивести їх на екран, Ось результат:
форми
Перш ніж ми перейдемо до post запитам, необхідно розібрати, що таке форми? Чому потрібно? Тому що глобальна змінна $ _POST [ ""] створюється саме через форми. Що таке форма? Це поля для введення будь-нитка інформації користувачем. Поля бувають в одну строчку, великі поля, так само бувають радіо кнопочки, чек бокси. Розберемо все по порядку ...
Форма це тег:
У форми є атрибути, перерахую найпоширеніші:
Давайте створимо форму:
Як файлу обробника я поставив файл test.php так як саме в ньому пишу для Вас приклади. Метод відправки я поставив post так як саме цим методам користуються в 99.9% випадках. Так само я присвоїв нашій формі ім'я - form
Тепер зануримося в світ елементів форми. Насамперед Ви повинні зрозуміти, що майже всі елементи є тегом відмінність лише в атрибуті type у цих тегів. Давайте я перерахую використовувані елементи форм:
Я впевнений, що ви не раз зустрічали такі поля, так що тут як то кажуть: «no comments»
Тепер давайте складемо невелику тренувальну анкету, з якої будемо працювати далі. Наше завдання скласти невелику анкетку яка повідає нам ім'я заполнявшего, підлогу, з якої він країни, улюблений колір і поле тексту де користувач може додати що-нить про себе. Ось що у мене вийшло:
Якщо користувач введе в текстове поле будь-якої текст і натисне на кнопку «Відправити», то на сервер буде відправлена \u200b\u200bзмінна text зі значенням того вмісту, яке ввів користувач.
POST і GET запити простими словами
Ця змінна буде відправлена \u200b\u200bметодом POST.
Якщо в формі написати так:
Чи не знайшли відповідь на своє питання? Подивіться тут