аватар |

Уроки / PHP /

Урок 9. Что такое метод POST в PHP или как обработать форму?

Одна из самых важных и популярных задач в PHP - передача данных. Вы, наверное, не раз сталкивались с url вроде site.ru/page.php?id=114841 или формой с полями ввода текста (регистрация, новый комментарий и тд). В этом и следующем уроках поговорим об передаче данных в PHP.

Метод POST в PHP


Метод состоит из двух частей: HTML c формой и полями и файла-обработчика на PHP.

Если Вы ещё не сталкивались с формами и полями ввода в HTML или хотите освежить знания, то:
Урок 9. Работа с формами в html
Урок 10. Форма и элементы: флажок, радиокнопка, поле

Внимание! Для работы нам достаточно создать соответственно всего два файла.

Демонстрация Скачать исходники

Рассмотрим пример с комментариями - реализация авторизации пользователя на сайте :

Код HTML (файл post.html)

<html>
<head>
  <title>Форма</title>
</head>
<body>

<!-- В form в атрибуте name указывается название формы и в будущем массива -->
<!-- В action название файла обработчика -->
<!-- В method указываем способ передачи post -->
  <form name = 'myform' action = 'test_reg.php' method = 'post'>
    Ваш логин: <input type = 'text' name = 'login' /> 
    
    Ваш пароль: <input type = 'password' name = 'pass' /> 
    
    <input type = 'submit' value = 'Войти' />
  </form>
</body>
</html>

Теперь подробнее о методах передачи данных. Существует два вида GET (через url, открытый - можно изменить url вручную) и POST (через форму, закрытый). Отличие будет заключаться в содержании адресной строки, то есть url.

При получении данных переданных одним из этих способов в массив соответствующего методу типа ($_GET или $_POST) собираются данные. Также существует массив $_REQUEST, который может содержать и $_GET, и $_POST одновременно. Но это для других примеров. Рекомендую большинство данных передавать методом POST.

Теперь рассмотрим код обработчика.

Код PHP (в файле test_reg.php)

<?php
  $login = $_POST['login']; // принимаем данные отправленные POST
  $pass = $_POST['pass']; // login и pass - это name полей ввода

  if (($login == "Admin") && ($pass == "Pass"))
    echo "Здравствуйте, Admin! Сегодня кофе или чай?)";
  else echo "Вы ввели неверную связку логин-пароль. Попробуйте ещё <a href='post.html'>Назад</a>";
?>

Вы можете видеть как в отдельные переменные мы записываем значение полей с соответствующими name в массиве $_POST, хотя также можно было собрать и в $_REQUEST.

В обработчике, пожалуй, проработаем условие авторизации - совпадают ли логин и пароль в форме с нашим выдуманным (соответственно Admin и Pass). И либо поздороваемся с входящим (Здравствуйте, Admin! Сегодня кофе или чай?), либо нет (Вы ввели неверную связку логин-пароль. Попробуйте ещё). Однако для создания полноценной авторизации Вам ещё надо ознакомиться с cookie, сессиями и базами данных. Но об этом позже.

Непосредственно в скрипте можно как угодно обрабатывать данные: дописывать, стирать, шифровать и так далее. Главное - это знать имя переменной (задаётся в HTML-форме) и дальше собирать их с помощью массивов $_POST, $_GET и $_REQUEST.

Спасибо за внимание!
 



Похожие статьи


Комментарии к статье (vk.com)