Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 15.doc
Скачиваний:
8
Добавлен:
20.08.2019
Размер:
160.26 Кб
Скачать

Обработка запросов с помощью php

Внутри PHP-скрипта имеется несколько способов получения доступа к данным, переданным клиентом по протоколу HTTP:

  1. По именам переданных переменных (напомним, что данные передаются в виде пар «имя переменной, символ «=», значение переменной»). Таким образом, если, например, было передано first_name=Nina, то внутри скрипта появлялась переменная $first_name со значением Nina. Использовать в программе имена переданных переменных напрямую небезопасно.

  2. Через специальный массив – $_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;

?>

  1. Массивы $_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");

?>