Главная » 2015 » Ноябрь » 21 » Урок 3. Использование методов GET и POST в PHP для передачи и приема данных
21:35
Урок 3. Использование методов GET и POST в PHP для передачи и приема данных

Использование методов 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 //С помощью суперглобального массива $_GET //выводим принятые значения: 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.

Категория: Все о сайтах | Просмотров: 313 |
Всего комментариев: 0
avatar