Головна - Новачкам
PHP та методи передачі даних GET та POST. POST, GET: чим відрізняються запити один від одного Що таке передача даних методом get

Опис

Атрибут method повідомляє сервер про метод запиту.

Синтаксис

...

Значення

Значення атрибуту method залежить від регістру.

Розрізняють два методи - get і post. Get Цей метод є одним з найпоширеніших і призначений для отримання необхідної інформації та передачі данихадресному рядку

. Пари «ім'я=значення» приєднуються в цьому випадку до адреси після знака питання і розділяються між собою амперсандом (символ &). Зручність використання методу get полягає в тому, що адресу з усіма параметрами можна використовувати неодноразово, зберігши її, наприклад, закладки браузера, а також змінювати значення параметрів прямо в адресному рядку.

post Метод post посилає на сервер дані у запиті браузера. Це дозволяє надсилати більше даних, ніж доступно методу get, оскільки в нього встановлено обмеження 4 Кб. Великі обсяги даних використовуються у форумах, поштових службах, заповненні бази даних, при пересиланні файлів та ін.

Обов'язковий атрибут

Значення за замовчуванням



Тег FORM, атрибут methodВідправити

При розробці будь-якого проекту

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

Форми позначаються тегом form:

Атрибут methodпоказує яким способом буде здійснюватися відправлення форми. Існують 2 методи - GET та POST. Докладніше читайте трохи нижче, поки в краці розповімо про основні елементи форми:

Текстове поле - Input text

Текстове поле, до якого можна вводити інформацію. Атрибут name- ім'я текстового поля, value- Значення. Виглядають ось так:

Кнопка - Input Submit

Кнопка використовується для надсилання форм. Виглядає так:

Текстовий блок - Textarea

Текстовий блок зазвичай використовується для написання повідомлень великого розміру. Атрибут rows, cols - довжина та ширина.

Зовнішній вигляд:

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

Метод GET та POST при надсиланні форм

Методи GET та POSTвказуються в атрибуті method форми при її ініціалізації:

Метод GETпередає інформацію на адресу сторінки, метод POST- У заголовках. Щоб краще зрозуміти що таке метод GET та POSTнапишемо скрипт, який буде відправляти наше ім'я та повідомлення на сервер, а сервер виводитиме повідомлення на екран.

У PHP дані отримані методом GETзберігаються у змінній $_GET. Дані передані методом POSTзберігаються у змінній $_POST.

Напишемо спочатку код для роботи з методом GET, потім методом POST.

Форми - Дизайн студія OX2.ru

 

print_r($_GET); //Виводимо масив функцією print_r
?>

Ваше ім'я:
Повідомлення:



Тепер переробимо скрипт для надсилання даних методом POST.

Форми - Дизайн студія OX2.ru

 

print_r($_POST); //Виводимо масив функцією print_r
?>

Ваше ім'я:
Повідомлення:



Щоб краще зрозуміти роботу з формами на PHP, відправлення та прийом даних методами POST та GET, у наступному уроці зробимо просту логічну гру.

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

OX2 2014-10-05 2014-10-05

Клієнти браузера можуть надсилати інформацію на веб-сервер.

Перш ніж браузер відправить інформацію, він кодує її, використовуючи схему, яка називається кодуванням URL. У цій схемі пари ім'я/значення поєднуються з рівними знаками, а різні пари поділяються амперсандом.

Name1=value1&name2=value2&name3=value3

Пробіли видаляються та замінюються символом +, і будь-які інші неалфанумерні символи замінюються шістнадцятковими значеннями. Після того, як інформація закодована, вона надсилається на сервер.

Метод GET

Метод GET відправляє закодовану інформацію користувача, додану до запиту сторінки. Сторінки та кодованої інформації відокремлені один від одного? знаком питання.

http://www.test.com/index.htm?name1=value1&name2=value2

  • Метод GET створює довгий рядок, який відображається у ваших журналах сервера, у полі «Розташування» браузера.
  • Метод GET обмежується відправити ДО лише 1024 символів.
  • Ніколи не використовуйте метод GET, якщо у вас є пароль чи інша конфіденційна інформаціядля надсилання на сервер.
  • GET не може бути використаний для передачі двійкових даних, наприклад, зображення або текстові документина сервер.
  • Доступ до даних, надісланих методом GET, можна отримати за допомогою змінної оточення QUERY_STRING.
  • PHP надає асоціативний масив $_GET для доступу до всієї інформації, що відправляється з використанням методу GET.

if($_GET["name"] || $_GET["age"]) ( echo "Welcome ". $_GET["name"]; echo "You are ". $_GET["age"]. " years old ."; exit(); )

Name: Age:

Метод POST

Метод POSTпередає інформацію через заголовки HTTP. Інформація кодується, як описано у випадку методу GET, і міститься в заголовку QUERY_STRING.

  • Метод POST не має обмежень на розмір даних, які потрібно надіслати.
  • Метод POST може використовуватися для надсилання ASCII, а також двійкових даних.
  • Дані, надіслані методом POST, проходять через заголовок HTTP, тому безпека залежить від протоколу HTTP. Використовуючи Secure HTTP, ви можете переконатись, що ваша інформація захищена.
  • PHP надає асоціативний масив $_POST для доступу до всієї інформації, що відправляється з використанням методу POST.

Спробуйте наступний приклад, помістивши вихідний коду скрипт test.php.

if($_POST["name"] || $_POST["age"]) ( if (preg_match("[^A-Za-z"-]",$_POST["name"]))) ( die (" invalid name and name should be alpha"); ) echo "Welcome ". $_POST["name"]; echo "You are ". $_POST["age"]. " years old."; exit(); )

Name: Age:

Змінна $_REQUEST

Змінна PHP $_REQUESTмістить вміст як $_GET, $_POST, так і $_COOKIE. Ми обговоримо змінну $_COOKIEколи ми розповімо про файли cookie.

Змінна PHP $_REQUEST може використовуватися для отримання результату даних форми, відправлених з використанням методів GET і POST.

Спільного між ними те, що вони працюють однаково. Різниці між ними технічно жодної. А ось ідеологічні відмінності є.

Я розповім про них у контексті PHP. Прошу помітити, що протокол HTTP до PHP має непряме відношення, тому що він створювався для обміну. html сторінкамиа PHP просто розширює можливості того й іншого.

GET запит використовується щоб отримати дані, а POST щоб відправити. (Нагадую, що технічно вони працюють однаково).

Тому в контексті PHP, спираючись на цю ідеологію, зробили наступним чином:
1. При кожному запуску PHP за промовчанням створюються суперглобальні масиви ($_GET, $_POST).
2. Якщо у рядку запиту є знак запитання(?). Те, що після нього вважається параметрами GET запиту вони представлені у форматі "ключ"="значення" і як роздільник використовується знак амперсанда (&)
Приклад:
GET /index.php?name=Андрій&surname=Галкін
це рядок запиту, тут два параметри. ці параметри потраплять до масиву $_GET.
3. $_POST заповнюється в інший спосіб. вміст цього масиву заповнюється із "заголовків запиту". Тобто з місця, прихованого від очей у явному вигляді. Всю рутину зі створення таких заголовків бере він браузер. Хоча іноді й щось редагується у заголовках у ручну.

Найчастіше пост запит використовується у формах (для надсилання даних).

Наприклад, у нас є форма для входу 2 поля логін і пароль.

Уявімо, що ми використовуємо GET метод. Тоді при надсиланні форми ми перейдемо на наступну адресу /login.php?login=Андрій&password=123 погодьтеся, що так передавати таку інформацію зовсім не безпечно. Будь-хто може відкрити ваш браузер і починаючи вводити адресу сайту він з історії може побачити ваші паролі та логіни.

А от якби ми вказали методом POST, то ми б отримали наступний запит:
POST /login.php (login=Андрій&password=123) те що в дужках було б приховано і не збережено в браузері.

Загалом підсумовуючи:
GET - це щоб отримати певну сторінку у певному вигляді(Сортування, поточна сторінка в блозі, рядок пошуку тощо).
POST - для оправлення даних, які не впливають на відображення сторінки, в тому плані, що ці дані впливають тільки на результат виконання скрипту (логіни, паролі, номери кредиток, повідомлення тощо).

І ще одна хороша новина їх можна комбінувати, наприклад
Думаю я вже досить пояснив, що з цього вийде і які параметри в який масив потраплять.

Застосування методів GET та POST у PHP важко переоцінити, оскільки ці методи зустрічаються практично на кожному сайті. Перш ніж вивчати нижче описаний матеріал, раджу ознайомитись з html тегом

. Розглянемо кожен із цих методів у подробиці.

Метод GET

Метод GET використовує рядок URL для передачі даних. Можливо, Ви звертали увагу на довгі та незрозумілі URL-адреси. Наприклад: function.php?login=Alex&email=dezyakin. В даному випадку дані обробляються у function.php. Після знака питання "?" йде перерахування параметрів, що передаються (параметр поділяються знаком "&") зі значеннями: параметру login присвоєно значення Alex, а змінною email значення dezyakin. Дані зберігатимуться в суперглобальному масиві $_GET . Наведемо приклад використання методу GET наведений нижче:

Login : E-mail: За допомогою суперглобального масиву $_GET виводимо прийняті значення:*/ echo "
login = ". $_GET["login"] ; echo "
email = ". $_GET["email"] ; ?>

Зверніть увагу на те, як ми зчитуємо значення із суперглобального масиву $_GET: $_GET["ім'я_змінної"]. У прикладі імена змінних було оголошено у вигляді (name=login і name=email).

Порада:
Перш ніж обробляти отримані значення, раджу перевіряти їх на існування через функції. isset(ім'я_змінної)або empty(ім'я_змінної)- ці функції були розглянуті в попередньому уроці 2: змінні PHP. Наприклад:

перевірка на існування за допомогою isset: if isset ($_GET["login"] ) ( оператори для обробки login ... } //або ж перевірити на існування за допомогою empty: if empty ($_GET["email"] ) ( оператори для обробки email ... } ?>

У формі можна вказати ім'я файлу, який оброблятиме значення, що передаються. Робиться це за допомогою атрибуту форми action, якому можна присвоїти адресу цього файлу. За промовчанням цей файл надано поточному файлу(Тобто обробляється у файлі, де і розташована форма). Наведемо приклад, у якому дані форми передаються на обробку файл srcipt.php :

Login : E-mail:

У файлі script.php повинен бути якийсь обробник інформації, інакше інформація буде передана в порожню.

Метод GET має безліч недоліків:

  • Користувач бачить значення параметрів, що передаються;
  • Користувач може легко підробити параметри, що передаються;
  • Незручна передача бінарної інформації (доводиться кодувати в текстовий формат);
  • Обсяг даних обмежений - 8 Кбайт;

Через перераховані вище недоліки метод GET застосовується тільки в тих випадках, коли потрібно передати невеликий обсяг даних, а також ці дані ніяк не засекречені.

Метод POST

Метод POST відрізняється від GET тим, що дані передаються у закритій формі. Існує суперглобальний масив $_POST, з якого можна зчитувати дані таким чином: $_POST["ім'я_змінної"]. Наприклад:

Login : "> E-mail: ">
За допомогою суперглобального масиву $_POST виводимо прийняті значення:*/ echo "
login = ". $_POST["login"] ; echo "
email = ". $_POST["email"] ; ?>

Результат виконання вищезазначеного коду представлений на малюнку нижче:

Як бачите URL не має ніякої приписки, але дані були отримані і виведені.

Примітка:
1) Обсяг значень, що передаються методом POST за умовчанням обмежений і дорівнює 8 Мбайт. Щоб збільшити це значення, потрібно змінити директиву post_max_size в php.ini.

2) У ранніх версіях PHP замість коротких назв суперглобальних масивів $_GET і $_POST використовувалися довші імена: $HTTP_GET_VARS і $HTTP_POST_VARS . За замовчуванням вони вимкнені у php 5, але Ви можете їх увімкнути в конфігураційному файлі php.ini за допомогою register_long_arrays . У php 6 версії ці довгі назви будуть недоступними.

3) Перед обробкою змінних з $_POST, раджу перевіряти змінні на їх наявність, також як це робилося з методом GET.



 


Читайте:



Як зменшити розмір pdf, докладна інструкція

Як зменшити розмір pdf, докладна інструкція

PDF-файли з великою кількістю графічних елементів виглядають симпатично, проте передавати їх електронною поштою – суцільна мука через великі розміри...

Найкращі програми для дефрагментації жорсткого диска на Windows

Найкращі програми для дефрагментації жорсткого диска на Windows

А у цій статті будуть розглянуті найкращі програми для дефрагментації жорсткого диска. Всі вони безкоштовні, і ви без проблем зможете знайти їх на оф.

Вибір ресивера та акустики (бюджетний hi-fi) Підлогові та поличкові

Вибір ресивера та акустики (бюджетний hi-fi) Підлогові та поличкові

Більшість користувачів домашньої акустики не зазнають особливих незручностей під час прослуховування музики у форматі MP3 і навіть під час перегляду фільмів із...

Не працює кулер на ноутбуці

Не працює кулер на ноутбуці

Сьогодні більшість ноутбуків оснащується потужним «залізом», що дозволяє запускати на них серйозні програми, а також вимогливі ігри.

feed-image RSS