Обработка запросов с помощью php
Внутри PHP-скрипта имеется несколько способов получения доступа к данным, переданным клиентом по протоколу HTTP:
По именам переданных переменных (напомним, что данные передаются в виде пар «имя переменной, символ «=», значение переменной»). Таким образом, если, например, было передано first_name=Nina, то внутри скрипта появлялась переменная $first_name со значением Nina. Использовать в программе имена переданных переменных напрямую небезопасно.
Через специальный массив – $_REQUEST. Этот массив содержит данные, переданные методами POST и GET, а также с помощью HTTP cookies. Это суперглобальный ассоциативный массив, т.е. его значения можно получить в любом месте программы, используя в качестве ключа имя соответствующей переменной (элемента формы).
Пример 1. Создадим форму для регистрации студентов:
<html>
<h2>Форма для регистрации участников</h2>
<form action="script.php" method=POST>
<!--данные формы будет обрабатывать файл 1.php; отправка запроса - методом POST-->
Имя <br><input type=text name="first_name" value="Введите Ваше имя"><br>
Фамилия <br><input type=text name="last_name"><br>
E-mail <br><input type=text name="email"><br>
<p>На каком курсе вы обучаетесь:<br>
<input type=radio name="kurs" value="1">1 курс<br>
<input type=radio name="kurs" value="2">2 курс<br>
<input type=radio name="kurs" value="3">3 курс<br>
<input type=radio name="kurs" value="4">4 курс<br>
</p>
<input type=submit value="Отправить"><input type=reset value="Отменить">
</form>
</html>
Тогда в файле script.php, обрабатывающем эту форму, можно написать следующее:
<?php
$str="Здравствуйте,".$_REQUEST["first_name"]." ".$_REQUEST["last_name"]."! <br>";
$str.= "Вы обучаетесь на ".$_REQUEST["kurs"]."е";
echo $str;
?>
Массивы $_POST и $_GET позволяют разделить GET-параметры от POST-данных. Массив $_REQUEST представляет объединение массивов $_POST и $_GET.
Пример 2. Напишем скрипт для обработки формы из примера 1. Пусть данные были переданы методом POST, и данные, переданные другими методами, мы обрабатывать не хотим. Это можно сделать следующим образом:
<?php
$str = "Здравствуйте, ".$_POST["first_name"]." ".$_POST["last_name"]."!<br>";
$str.= "Вы обучаетесь на ".$_POST["kurs"]."е";
echo $str;
?>
Если при работе с такими элементами формы как checkbox и radiobutton переключатель не активен, то перечисленные параметры вообще не будут переданы на сервер, как будто их вообще не было. Следовательно, при попытке обратиться в скрипте к этим параметрам, мы получим сообщение, что переменная не существует. Поэтому написать, например, echo $_POST['checkbox1']; мы не можем, нам необходимо сначала проверить существование этих параметров в запросе. Проверка существования параметра осуществляется с помощью функции isset(), которая служит для проверки существования переменных.
Например:
if (isset($_POST['checkbox1'])) echo $_POST['checkbox1'];
if (isset($_POST['radiobutton'])) echo $_POST['radiobutton'];
Только после проверки существования перечисленных параметров формы можно начинать работу с переменными.
Множественный список можно представить в виде массива, а обработать его элементы с помощью цикла foreach. Нам даже не обязательно знать количество элементов множественного списка. Нам нужно лишь предварительно дать понять PHP, что мы будем передавать массив:
<select name=day[] size=7 multiple>
<option value=1 selected>Понедельник</option>
<option value=2>Вторник</option>
<option value=3>Среда</option>
<option value=4>Четверг</option>
<option value=5>Пятница</option>
<option value=6>Суббота</option>
<option value=7>Воскресенье</option>
</select>
Квадратные скобки []- это признак массива. Циклическая обработка массива осуществляется так:
foreach ($_POST['day'] as $key=>$value) echo "$key = $value <br>";
Иногда возникает необходимость узнать значение какой-либо переменной окружения, например метод, использовавшийся при передаче запроса или IP-адрес компьютера, отправившего запрос. Получить такую информацию можно с помощью функции getenv(). Она возвращает значение переменной окружения, имя которой передано ей в качестве параметра.
<?php
// возвратит использованный метод
getenv("REQUEST_METHOD");
// выведет IP-адрес пользователя,
// пославшего запрос
echo getenv("REMOTE_ADDR");
?>