Использование методов GET и POST

Применение методов GET и POST в PHP трудно переоценить, поскольку эти методы встречаются практически на каждом сайте. Прежде чем изучать ниже описанный материал, советую ознакомится с html тегом <form>.

Метод GET использует для передачи данных строку URL. Возможно, Вы обращали внимание на длинные и непонятные URLы. Например: function.php?login=Alex&email=dezyakin. В данном случае данные обрабатываются в function.php. После знака вопроса "?" идет перечисление передаваемых параметров (параметр разделяются знаком "&") со значениями: параметру login присвоено значение Alex, а переменной email значение dezyakin. Данные будут хранится в суперглобальном массиве $_GET. Приведем пример использования метода GET представлен ниже:
<html>
<body>
<form method="GET"> <!--указание метода GET-->
Login: <input type="text" name="login">
E-mail: <input type="text" name="email">
<input type="submit" value="Отправить">
</form>

<?php
//С помощью суперглобального массива $_GET
//выводим принятые значения:
echo "<br/>login = ". $_GET['login'];
echo "<br/>email = ". $_GET['email'];?>
</body>
</html>
Результат выполнения выше описанного кода представлен на рисунке ниже:
Пример применения метода GET
Обратите внимание на то, как мы считываем значения из суперглобального массива $_GET: $_GET['имя_переменной']. В нашем примере имена переменных были объявлены в форме (name=login и name=email).
Совет:
Прежде чем обрабатывать полученные значения советую проверять их на существование через функции isset(имя_переменной) или empty(имя_переменной) - эти функции были рассмотрены в предыдущем уроке 2: переменные в PHP. Например:
<?php
//проверка на существование с помощью isset:
if isset($_GET['login'])
{
операторы для обработки login
...
}
//или же проверить на существование с помощью empty:
if empty($_GET['email'])
{
операторы для обработки email
...
}
?>
В форме можно указать имя файла, который будет обрабатывать передаваемые значения. Делается это с помощью атрибута формы action, которому можно присвоить адрес этого файла. По умолчанию этот файл присвоен текущему файлу (т.е. обрабатывается в файле, где и расположена форма). Приведем пример, в котором данные из формы передаются на обработку в файл srcipt.php:
<form method="GET" action="srcipt.php">
Login: <input type="text" name="login">
E-mail: <input type="text" name="email">
<input type="submit" value="Отправить">
</form>
В файле script.php должен содержатся какой-то обработчик информации, иначе информация будет передана в пустую.
Метод GET обладает множеством недостатков:
пользователь видит значения передаваемых параметров;
пользователь может легко подделать передаваемые параметры;
неудобная передача бинарной информации (приходится кодировать в текстовый формат);
объем передаваемых данных ограничен - 8 Кбайт;
Из-за выше перечисленных недостатков метод GET применяется только в тех случаях, когда нужно передать небольшой объем данных, а также эти данные никак не засекречены.


Метод POST отличается от GET тем, что данные передаются в закрытой форме. Существует суперглобальный массив $_POST, из которого можно считывать данные следующим образом: $_POST['имя_переменной']. Например:
<html>
<body>
<form method="POST"> <!--указание метода POST-->
Login: <input type="text" name="login" value="<?php echo $_POST['login'];?>">
E-mail: <input type="text" name="email" value="<?php echo $_POST['email'];?>">
<input type="submit" value="Отправить">
</form>

<?php
//С помощью суперглобального массива $_GET
//выводим принятые значения:
echo "<br/>login = ". $_POST['login'];
echo "<br/>email = ". $_POST['email'];?>
</body>
</html>
Результат выполнения выше описанного кода представлен на рисунке ниже:
Пример применения метода POST
Как видите 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.

Комментарии

Популярные сообщения из этого блога

Motor Shield L293D + Arduino

Перенос Armbian на SSD

Радиореле 220В 433МГц c кодировкой сигнала eV1527