Применение методов 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 с каптчей