Методы GET и POST

Как передаются данные

 

Прежде чем перейти к созданию дальнейшего кода, необходимо хорошенько разобраться в том, как и что именно браузер передаёт на сервер при нажатии на кнопку  Отправить .

 

Методы GET и POST

При нажатии на кнопку браузер формирует запрос, который затем отправляет на сервер при помощи метода GET или POST. В чём различия?

Метод GET имеет ограничение по объёму передаваемых данных - всего 4 килобайта, поэтому используется для отправки небольших запросов, например, данных из адресной строки.

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

При отправке браузер учитывает данные тега <form>, в котором атрибут method указывает, каким именно способом должна быть передана информация (см. главу 8, строку 30 кода).

 

Как передаются данные

В запросе может содержаться достаточное количество данных, но в первую очередь для работы сайта важна информация, содержащаяся в адресной строке и данные, введённые пользователем. О том, как составляется адрес страницы, было рассказано в главе 6, поэтому здесь рассмотрим передачу данных.

Когда пользователь введёт все данные и нажмёт кнопку   Отправить , браузер сначала проверит правильность заполнения формы, после чего сформирует запрос, в котором буде содержаться адрес, указанный в атрибуте action тега <form> (см. главу 8, строку 30 кода), и все данные, введённые пользователем.

Рассмотрим что получит сервер на примере компонента Feedback_Form, про который шла речь в предыдущих главах; это будет содержимое текстового поля, значение в списке и три загруженных файла изображения. Если какое-либо изображение не будет загружено, буде передана только информация о наличии в форме поля для загрузки.

Сервер при получении запроса переадресует его на нужный сайт, сайт переадресует запрос соответствующему компоненту, а контроллер компонента - соответствующему файлу-обработчику формы  (см. главу 6).

Данные, введённые пользователем, передаются в виде массива. Представим себе, что в поле введён некоторый текст, выбран элемент списка и введено одно изображение; тогда после отправки обработчик формы получит два массива:

Array (
      [t-dish] => Вопрос
      [mess_text] => Этот текст создан для проверки работы формы обратной связи.
      [new_message] => Отправить!
      )
Array (
      [mess_img_1] => Array (
                  [name] => Файл1.png
                  [type] => image/png
                  [tmp_name] => C:\OSPanel\OpenServer\userdata\php_upload\php30D.tmp
                  [error] => 0
                  [size] => 618618
                  )
      [mess_img_2] => Array (
                  [name] =>
                  [type] =>
                  [tmp_name] =>
                  [error] => 4
                  [size] => 0
                  )
      [mess_img_3] => Array (
                  [name] =>
                  [type] =>
                  [tmp_name] =>
                  [error] => 4
                  [size] => 0
                  )
      )

Первый массив - это данные в переменной $_POST. Массив формируется из следующих значений:

  • список: элемент select, имя - t-dish, значение - "Вопрос";
  • текстовое поле: элемент textarea, имя - mess_text, значение "Этот текст создан для проверки работы формы обратной связи";
  • кнопка: элемент input, имя - new_message, значение - "Отправить!".

Обратите внимание: ключом в каждой паре (ключ => значение) является имя элемента (атрибут name, см. главы 9-12, строки кода 37, 97, 102, 108, 112). Помимо полей, так же передаётся информация о кнопке и её значении (надписи).

Второй массив - это данные в переменной $_FILES. Массив формируется из следующих значений:

[имя поля для загрузки файла] => массив, состоящий из:

  • [name] - имя загружаемого файла;
  • [type] - тип файла;
  • [tmp_name] - временное имя загружаемого файла и полный путь к нему;
  • [error] - код ошибки при загрузке, например, 4 - файл не загружен (отсутствует);
  • [size- размер файла (в байтах).

Для каждого поля все эти данные указываются отдельно. При загрузке в папку $_FILES попадают только данные о файле; сам файл сначала загружается во временную папку (в целях безопасности), после чего он проходит проверку, ему присваивается новое имя (или в качестве нового присваивается старое) и файл сохраняется в нужное место.

Как работать с полученными данными будет подробно рассмотрено в следующих главах.

 

Добавлять комментарии и ответы могут только пользователи, прошедшие регистрацию!
Зарегистрируйтесь и напишите своё мнение или ответ!