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

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

Метод GET

Метод 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[‘имя_переменной’]. В нашем примере имена переменных были объявлены в форме (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

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

Результат выполнения выше описанного кода представлен на рисунке ниже:

Как видите 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.

Следующий четвертый урок будет посвящен: типам данных в php.



Читайте также:

• Операторы цикла (while, do..while, for)

• Как сделать сайт на PHP

• Как сделать меню для сайта на PHP

• Типы данных в php

• Операции над числами в php

• Поразрядные операции в php

• Что такое HTTP. Коды ответов HTTP сервера

• Как добавить PHP код в html файл

• Как добавить кнопку "Наверх" на сайте

• Как сделать форму обратной связи на php с каптчей

← Перейти в каталог php уроков

Читайте также:

Copy Protected by Chetan's WP-Copyprotect.