Для обращения к переменным, переданным с помощью HTTP-запросов, исполдьзуется специальный массив – $_REQUEST. Этот массив содержит данные, переданные методами POST и GET, а также с помощью HTTP cookies. Это суперглобальный ассоциативный массив, т.е. его значения можно получить в любом месте программы, используя в качестве ключа имя соответствующей переменной (элемента формы).
Допустим, мы создали форму для регистрации участников конференции по программирования, содержащую поля first_name, last_name, title_paper, section. Тогда скрипт, обрабатывающем эту форму, может быть следующий:
<?php
$str = "Здравствуйте,
".$_REQUEST["first_name"]. "
".$_REQUEST["last_name"]."! <br>";
$str .="Вы зарегистрировались на конференцию в секцию ".$_REQUEST["section "]." С докладом ".$_REQUEST["title_paper "] ;
echo $str;
?>
Тогда, если в форму мы ввели имя «Вася», фамилию «Петров» и выбрали среди всех секций секцию РНР и ввели название доклада “Обработка запросов в РНР”, на экране браузера получим такое сообщение:
Вася Петров!
Вы зарегистрировались на конференцию в секцию РНР С докладом Обработка запросов в РНР.
Есть также суперглобальные массивы $_POST и $_GET, содержащие параметры, переданные по POST и GET запросам соответственно.
Приведем пример использования этих массивов. Допустим, нам нужно обработать форму, содержащую элементы ввода с именами first_name, last_name, title_paper, section. Данные были переданы методом POST, и данные, переданные другими методами, мы обрабатывать не хотим. Это можно сделать следующим образом:
<?php
$str = "Здравствуйте,
".$_POST["first_name"]. "
".$_POST["last_name"]."! <br>";
$str .="Вы зарегистрировались на конференцию в секцию ".$_POST ["section "]." С докладом ".$_POST["title_paper "] ;
echo $str;
?>
Для того, чтобы сохранить возможность обработки скриптов более ранних версий, чем PHP5, была введена директива register_globals, разрешающая или запрещающая доступ к переменным непосредственно по их именам. Если в файле настроек PHP параметр register_globals=On, то к переменным, переданным серверу методами GET и POST, можно обращаться просто по их именам (т.е. можно писать $first_name). Если же register_globals=Off, то нужно писать $_REQUEST["first_name"] или $_POST["first_name"], $_GET["first_name"], $HTTP_POST_VARS["first_name"], $HTTP_GET_VARS["first_name"]. С точки зрения безопасности эту директиву лучше отключать (т.е. register_globals=Off). При включенной директиве register_globals перечисленные выше массивы также будут содержать данные, переданные клиентом.
Иногда возникает необходимость узнать значение какой-либо переменной окружения, например метод, использовавшийся при передаче запроса или IP-адрес компьютера, отправившего запрос. Получить такую информацию можно с помощью функции getenv(). Она возвращает значение переменной окружения, имя которой передано ей в качестве параметра.
При использовании метода GET, данные передаются добавлением строки запроса в виде пар «имя_переменной=значение к URL-адресу ресурса». Все, что записано в URL после знака вопроса, можно получить с помощью команды getenv('QUERY_STRING');