Статьи

Як працювати з POST-запитів в PHP

  1. Як побачити тіло POST-запиту
  2. висновок

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

У попередньому уроці ми навчилися працювати з GET-запитами . Як ми пам'ятаємо, при цьому способі дані передаються на сервер за допомогою параметрів сторінки в адресному рядку. Таке буває зручно, коли нам потрібно поділитися посиланням в якій ці параметри потрібні. Наприклад, у нас запитують, де в Москві купити шафу. І ми скидаємо людині посилання на пошук в Яндексі:
https://yandex.ru/search/?text=шкаф%20в%20москве%20купить

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

Однак, параметри сторінки в адресному рядку - це не завжди доречно. Наприклад, коли в параметрах міститься якась конфіденційна інформація: пароль, пін-код. І будь-який повз проходить людина може її побачити. Як в такій ситуації бути? Використовувати POST-запити!

Що це таке? Так все той же запит від клієнта до сервера, тільки параметри передаються всередині тіла запиту, а не в адресному рядку. І побачити їх просто так не вийде.

Що за тіло запиту? Ну, це просто дані, які передаються на сервер. При цьому вони приховані від зайвих очей.

Щоб відправити POST-запит потрібно в HTML-формі задати для атрибута method значення POST.

Ось так:

<Html> <head> <title> Форма входу </ title> </ head> <body> <form action = "/ login.php" method = "post"> <label> Логін <input type = "text" name = "login"> </ label> <br> <label> Пароль <input type = "password" name = "password"> </ label> <br> <input type = "submit" value = "Увійти"> < / form> </ body> </ html>

Дані, надіслані за допомогою POST-запиту доступні в PHP в суперглобального масиві $ _POST.

Давайте виведемо передані скриптом вище значення login і password. Для цього в файл login.php покладемо наступний код:

<? Php $ login =! Empty ($ _ POST [ 'login'])? $ _POST [ 'login']: ''; $ Password =! Empty ($ _ POST [ 'password'])? $ _POST [ 'password']: ''; ?&gt; <Html> <head> <title> Обробка POST-запиту </ title> </ head> <body> <p> Переданий login: <? = $ Login?&gt; <br> Переданий password: <? = $ Password ?> </ p> </ body> </ html>

Відкрийте тепер форму, введіть в неї значення і натисніть кнопку «Увійти».
Ви побачите введені вами в формі дані, при цьому вони не будуть відображатися в адресному рядку. Вуаля! Тепер ніхто не підгляне ваш пароль в адресному рядку.
Відкрийте тепер форму, введіть в неї значення і натисніть кнопку «Увійти»

Як побачити тіло POST-запиту

Щоб побачити дані POST-запиту в браузері, в Google Chrome потрібно перейти в режим розробника. Натисніть F12, перебуваючи у вікні браузера. Після цього ви побачите панель розробника.
Щоб побачити дані POST-запиту в браузері, в Google Chrome потрібно перейти в режим розробника

Перейдіть у вкладку Network, а потім встановіть галочку напроти пункту Preserve log.

Тепер поверніться на форму, і знову введіть дані, після чого натисніть на кнопку «Увійти».
Тепер поверніться на форму, і знову введіть дані, після чого натисніть на кнопку «Увійти»

Одночасно з тим, як ви натиснете на кнопку входу, ви побачите в панелі розробника запит на login.php.
Одночасно з тим, як ви натиснете на кнопку входу, ви побачите в панелі розробника запит на login

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

Нас тут цікавить вкладка Headers. Перейдіть в неї, і перейдіть в самий низ. Тут ви побачите ті дані, що браузер відправив на сервер.
Нас тут цікавить вкладка Headers

висновок

Ось так і працюють POST-запити під капотом. Використовують їх завжди, коли не потрібно відображати деталі запиту в адресному рядку. Хороші приклади: форма авторизації, введення даних про кредитну картку. Такими даними краще в адресному рядку не світити.

А зараз - трохи нестандартне домашнє завдання =)

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

Ru/search/?
Як в такій ситуації бути?
Що це таке?
Що за тіло запиту?
Empty ($ _ POST [ 'login'])?
Empty ($ _ POST [ 'password'])?
POST [ 'password']: ''; ?
Gt; <Html> <head> <title> Обробка POST-запиту </ title> </ head> <body> <p> Переданий login: <?
Login?
Gt; <br> Переданий password: <?

Новости