Передача данных командной строки
Чтобы начать писать простейшие сценарии на РНР типа “Hello world, сейчас 10 часов утра” нашим сценариям будет недоставать одного— интерактивного взаимодействия с пользователем.
Надо написать сценарий, который принимает в параметрах имя и возраст пользователя и выводит: “Привет, <имя>! Я знаю, вам <возраст> лет!”.
Cначала рассмотрим наиболее простой способ передачи имени и возраста cценарию — непосредственный набор их в URL после знака ? — н-р, в формате name=имя&аgе=возраст. Но довольно утомительно набирать эту строку вручную. Всякие там ?, &, %… Существуют удобные возможности языка HTML, которые, конечно, поддерживаются всеми браузерами.
Пусть у нас на сервере в корневом каталоге есть сценарий на РНР под названием hello.php. Наш сценарий распознает 2 параметра: name и аgе. Он должен отработать и вывести следующую HTML-страницу:
Привет, name! Я знаю, Вам аgе лет!
Только нужно name и аgе заменить на соответствующие значения. Таким образом, если задать в адресной строке браузера
http://www.somehost.com/script.cgi?name=Vasya&age=20
должны получить страницу с требуемым результатом.
Как только задача осознана, можно приступать к ее решению. Но прежде бывает полезно решить аналогичную, но более простую задачу.
Нам в сценарии надо получить строку параметров, переданную после знака вопроса в URL при обращении к сценарию. Для этого можно проанализировать переменную окружения QUERY_STRING, которая в РНР доступна под именем $QUERY_STRING. Напишем небольшой п-р, чтобы это проиллюстрировать (вывод параметров командной строки):
echo "Данные из командной строки: $QUERY_STRING";
?>
Если теперь запустим этот сценарий из браузера (перед этим сохранив его в файле test.php в корневом каталоге сервера) примерно вот таким образом:
http://www.myhoat.com/test.php?aaa+bbb+ccc+ddd
то получим документ следующего содержания:
Данные из командной строки: aaa+bbb+ccc+ddd
Заметим, что URL-декодирование символов не произошло: строка $QUERY_STRING, как и одноименная переменная окружения, всегда приходит в той же самой форме, в какой она была послана браузером.
Так как РНР изначально создавался именно как язык для Web-программирования, то он дополнительно проводит некоторую работу с переменной $QUERY_STRING перед тем, как управление будет передано сценарию. Он разбивает ее по пробельным символам (в нашем примере пробелов нет, их заменяют символы +, но эти символы РНР также понимает правильно) и помещает полученные кусочки в массив-список $argv, который впоследствии может быть проанализирован в программе.
Все же массив $argv используется при программировании на РНР крайне редко, что связано с гораздо большими возможностями интерпретатора по разбору данных, поступивших от пользователя.
Похожие записи
No user прокомментировали сообщение
Оставить комментарий