Методы передачи данных GET и POST
Отредактировано: 07 Ноября 2019
GET | POST |
Отправляет скрипту всю собранную информацию формы как часть URL
|
Пользователь сайта не видит передаваемые скрипту данные
|
Ограничивает объем передаваемой информации (максимальная длина URL — 1024 символа) | Позволяет передавать файлы |
Может пагубно повлиять на безопасность данных | Относительно безопасен |
Можно сделать закладкой | Нельзя сделать закладкой |
Требует настройки SEO | Не требует настройки SEO |
GET — удобен для создания страниц с выводом отфильтрованной информации. Например: поиск, сортировка, текущий пост и т.п.
POST — для передачи форм с конфиденциальной информации о логинах, паролях, номерах кредиток и т.п.
Стандартные методы передачи GET:
// Передача параметра с использованием ссылки
<a href="site.ru?page=5&num=10"></a>
// Передача параметра с использованием формы
<form action="" method="get">
<input name="say" id="say" value="Hi">
<button>Отправить</button>
</form>
Примеры обработки в PHP:
// Установка значения без использования форм и ссылок
$_POST['text'] = 'value';
// Пример получения значения
$param = empty($_GET['param']) ? '' : $_GET['param'];
// Получить значение не указывая принадлежность к тому или иному массиву
$param = $_REQUEST['param']
Установка параметров с помощью JQ:
// путем переадресации на страницу
var param1 = 2;
var param2 = 3;
$(location).href("http://site.ru/?a=" + param1 + "&b=" + param2);
// путем ajax запроса с параметрами в теле data
$.get('site.ru',
{
a: 2,
b: 3
},
function Success(data) {...}
);
// или вставкой в ссылку
$.get('http://site.ru/action.php?a=2&b=3');
Работа с методами GET и POST в MODX
Для быстрого вывода из массивов GET и POST в MODX удобно использовать возможности компонента FastField из pdoTools
<!-- Узнать какие данные находятся внутри массива -->
[[#GET]]
[[#POST]]
<!-- Вывести значение переданное через метод -->
[[#GET.key]]
[[#POST.key]]
<!-- Передать значение в параметрах сниппета -->
[[!pdoPage?
&parents=`0`
&sortby=`[[!#get.sort:default=`id`]]`
&sortdir=`[[!#post.dir:default=`asc`]]`
&showLog=`1`
]]
При необходимости можно создать сниппет принимающий значение
<?php
$param = empty($_GET['param']) ? '' : $_GET['param'];
Или устанавливающий и возвращающий значение
<?php
return isset($_GET[$param])
? $modx->stripTags($_GET[$param])
: '';
// вызов сниппета
[[!GET?param=`key`]]