GET-запросы в PHP взаимодействуем с пользователем


Оглавление (нажмите, чтобы открыть):

Wiki-учебник по веб-технологиям: PHP/Формы .

1. Введение

Элементы управления формы XHTML позволяют пользователям вводить данные и делать выбор и предоставляют механизм, с помощью которого пользователи взаимодействуют со страницей Web. Форма полезна в той мере, насколько она поддерживается сценарием обработки, закодированным на странице Web, или программой, выполняющейся на сервере Web. В данном учебнике рассматривается, как PHP, подобно другим серверным языкам программирования, взаимодействует с формами в ответ на ввод пользователя.

Введенные в форму данные посылаются на обработку, после щелчка на кнопке формы submit (отправка), .

Информация из полей формы передается затем на страницу, определенную атрибутом ACTION тега

Методы PHP GET и POST, переменная $_REQUEST

Клиенты браузера могут отправлять информацию на веб-сервер.

Прежде чем браузер отправит информацию, он кодирует ее, используя схему, называемую кодировкой URL. В этой схеме пары имя / значение объединяются с равными знаками, а разные пары разделяются амперсандом.

Пробелы удаляются и заменяются символом +, и любые другие неалфанумерные символы заменяются шестнадцатеричными значениями. После того, как информация закодирована, она отправляется на сервер.

Метод GET

Метод GET отправляет закодированную пользовательскую информацию, добавленную к запросу страницы. Страницы и кодированной информации отделены друг от друга ? знаком вопроса.

  • Метод GET создает длинную строку, которая отображается в ваших журналах сервера, в поле «Расположение» браузера.
  • Метод GET ограничивается отправить ДО только 1024 символов.
  • Никогда не используйте метод GET, если у вас есть пароль или другая конфиденциальная информация для отправки на сервер.
  • GET не может быть использован для передачи двоичных данных, например , изображения или текстовые документы, на сервер.
  • Доступ к данным, отправленным методом GET, можно получить с помощью переменной окружения QUERY_STRING.
  • PHP предоставляет ассоциативный массив $ _GET для доступа ко всей отправляемой информации с использованием метода GET.

Попробуйте следующий пример, поместив исходный код в скрипт test.php .

Метод POST

Метод POST передает информацию через HTTP-заголовки. Информация кодируется, как описано в случае метода GET, и помещается в заголовок QUERY_STRING.

  • Метод POST не имеет ограничений на размер данных, которые необходимо отправить.
  • Метод POST может использоваться для отправки ASCII, а также двоичных данных.
  • Данные, отправленные методом POST, проходят через HTTP-заголовок, поэтому безопасность зависит от протокола HTTP. Используя Secure HTTP, вы можете убедиться, что ваша информация защищена.
  • PHP предоставляет ассоциативный массив $_POST для доступа ко всей отправляемой информации с использованием метода POST.

Попробуйте следующий пример, поместив исходный код в скрипт test.php .

Переменная $_REQUEST

Переменная PHP $_REQUEST содержит содержимое как $_GET, $_POST, так и $_COOKIE. Мы обсудим переменную $_COOKIE, когда мы расскажем о файлах cookie.

Переменная PHP $_REQUEST может использоваться для получения результата из данных формы, отправленных с использованием методов GET и POST.

Попробуйте следующий пример, поместив исходный код в скрипт test.php.

Здесь переменная $_PHP_SELF содержит имя собственного скрипта, в котором он вызывается.


лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

PHP занятие 8. Передача данных

Методы передачи данных форм в php

Использование методов GET и POST

Атрибуты тега FORM

Get – данные из формы передаются на сайт, указанный в поле адреса браузера, с помощью знака « ? » и « & »

Использование метода GET

POST — используется для передачи больших объемов данных или когда нужно скрыть значения передаваемых параметров

Переданные сценарию параметры не отображаются в окне браузера

Суперглобальные переменные

При передачи данных формы на сервер формируются суперглобальные переменные — ассоциативные массивы, содержащие передаваемые значения:

  • $_GET[] — ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы GET .
  • $_POST[] – ассоциативный массив, который содержит все значения, передаваемые в сценарий с помощью метода формы POST .
  • $_REQUEST[] – ассоциативный массив, который содержит все значение, передаваемые в сценарий с помощью методов POST и GET .

Рассмотрим пример использования метода GET

AJAX + PHP: применение, взаимодействие, пример

В данной статье поговорим о взаимодействии ajax с php. Как связать работу ajax скрипта и php кода? Как применить ajax в веб разработке? Если вас интересуют такие вопросы, вы найдете на них ответы в нашей статье. А также примеры ajax php кода.

Наши цели

Применение ajax + php

Для того, чтобы понять, нужен ли нам вообще ajax с php, давайте разберемся для чего он может быть полезен. Применение ajax+ php может быть разнообразным, единственное, то что, нельзя конструировать элементы страницы с помощью данной технологии, которые несут в себе релевантность для поисковых систем. Потому что ajax подгружает элементы страницы после ее загрузки при вызове js событий, но как нам известно, поисковые системы не умеют читать javascript кода, поэтому нужно тщательно выбирать где нужно, а где не нужно применять ajax с php.

Где можно применить ajax + php?

1. Добавление нового комментария


3. Авторизация на сайте

4. Организация поиска на сайте (автозавершение)

5. Пошаговая регистрация пользователя на сайте

6. Подписка на e-mail

7. Просмотр фотографий

Как видите вариантов применения ajax + php масса. То есть, можно применить там, где перезагрузка страницы будет не уместной, где нужно просто обменяться данными с сервером.

Где не стоит применять ajax + php

Мое мнение объективное, может вы думаете иначе, но полагаясь на мой опыт скажу что ajax + php не стоит применять:

1. Для реализации меню

2. Реализации вкладок на странице (Например: когда в интернет магазине на странице товара вы видите обзор, информация, комментарии, фото, видео … не нужно делать загрузку данных при переключении данных вкладок.)

И другие негативные примеры, которые могут навредить лучшему ранжированию вашей страницы.

Взаимодействие ajax с php

По сути, технология ajax не может существовать без php скриптов, так как ajax, только отправляет данные на сервер и принимает обратный ответ, при этом не перезагружая страницы. Поэтому правильнее задать вопрос, как связать работу ajax и php. Но об этом мы поговорим в следующем пункте статьи (ajax php пример), а сейчас разберемся с спецификой работы ajax.

Для отправки данных на сервер, нужно создать объект XMLHTTPRequest. С помощью него открыть url (php скрипт), послать на него данные (POST или GET метод), получить ответ, и средствами знаний языка js вывести полученный ответ сервера на монитор (ответом может быть любой фрагмент или элемент страницы сайта).

Для прояснения посмотрите ниже предоставленную схему иллюстрирующую взаимодействие ajax с php.

Ajax + php пример

Для примера взаимодействия ajax с php, создадим два файла:

1. ajax_page.html

2. get_ajax.php

Сначала рассмотрим пользовательскую сторону приложения, то есть ajax_page.html:

ajax_page.html:

Разберем javascript сторону данного примера:

Мастер Йода рекомендует:  16 бесплатных книг по JavaScript

XmlHttp() – функция которая создает объект XMLHttpRequest(), она написана максимально компактно и кроссбраузерно.


ajax(param) – наш обработчик при вызове событий (onclick), принимает в массиве paramнеобходимые данные:

url – куда отсылать данные, причем он может быть в таком виде page.php?parameter=value, то есть информация может передаваться по методу GET.

statbox – ид html блока который будет принимать результаты работы ajax + php приложения.

method – метод отправки данных, может быть POST или GET. В нашем примере мы используем POST метод, но в то же время через url можно передавать информацию GET методом.

data – массив передаваемых данных. В нашем примере, данные автоматически берутся из поля 1 и 2, хотя можно просто писать data: .

success – имя функции или сама функция, которая будет обрабатывать полученные данные (текст).

Вызов функции ajax как вы видите сделан событием onclick=ajax().

Теперь разберем серверную сторону ajax + php приложения, то есть файл get_ajax.php:

Здесь все гораздо проще. Сначала устанавливаем кодировку выходящих данных, с помощью header. Устанавливаем запрет на кеширование данных. sleep(2) – приостанавливает работу скрипта на 2 секунды, это для того, что бы увидеть анимацию ожидания wait.gif. Выводим полученные данные, при этом читая все элементы массива $_POST и преобразуя их в нужную кодировку (для кириллицы).

Для запуска нашего ajax php приложения загружаем в браузер страничку ajax_page.html

Вот что у меня получилось при нажатии кнопки TEST AJAX :

Это ответ, полученный от файла get_ajax.php:

Остались еще вопросы по поводу ajax + php? Задайте их в комментариях ниже…

$HTTP_GET_VARS [устарело]

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

$_GET — $HTTP_GET_VARS [устарело] — Переменные HTTP GET

Описание

Ассоциативный массив переменных, переданных скрипту через параметры URL (известные также как строка запроса). Обратите внимание, что массив не только заполняется для GET-запросов, а скорее для всех запросов со строкой запроса.

$HTTP_GET_VARS содержит аналогичный набор данных, но не является суперглобальным. (Обратите внимание, что $HTTP_GET_VARS и $_GET являются разными переменными и обрабатываются PHP независимо друг от друга)

Примеры

Пример #1 Пример использования $_GET

Подразумевается, что пользователь ввел в браузере адрес http://example.com/?name=Иван

Результатом выполнения данного примера будет что-то подобное:


Примечания

Это ‘суперглобальная’ или автоматическая глобальная переменная. Это просто означает, что она доступна во всех контекстах скрипта. Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.

Параметры GET обрабатываются urldecode() .

Смотрите также

User Contributed Notes 4 notes

Just a note, because I didn’t know for sure until I tested it.

If you have a query string that contains a parameter but no value (not even an equals sign), like so:
http://path/to/script.php?a

The following script is a good test to determine how a is valued:

I tested this with script.php?a, and it returned:

a is an empty string
a is set

So note that a parameter with no value associated with, even without an equals sign, is considered to be an empty string («»), isset() returns true for it, and it is considered empty, but not false or null. Seems obvious after the first test, but I just had to make sure.

Of course, if I do not include it in my browser query, the script returns
Array
(
)
a is null

Note that named anchors are not part of the query string and are never submitted by the browser to the server.

// returns «apocalypse.php» and NOT «apocalypse.php#doom»

you would be better off treating the named anchor as another query string variable like so:
http://www.xyz-abc.kz/index.php?title=apocalypse.php&na=doom

. and then retrieve it using something like this:
$url = $_GET[‘title’].»#».$_GET[‘na’];

Hope this helps someone.

Please note that PHP setups with the suhosin patch installed will have a default limit of 512 characters for get parameters. Although bad practice, most browsers (including IE) supports URLs up to around 2000 characters, while Apache has a default of 8000.

Запрос к другому серверу или сайту с помощью PHP

Приветствую Вас, уважаемые читатели блога webcodius.ru. В процессе разработки различных веб-сервисов периодически появляется необходимость сбора различной информации с других сайтов. Т.е. требуется производить парсинг сайтов. Особенность парсинга — это быстрый и автоматизированный сбор данных и контента со страниц сайта. Например, часто требуется получить каталог товаров, включая картинки, с различных интернет-магазинов в автоматическом режиме. В этом случае и пригодится механизм парсинга сайтов.

В основном в php применяется два способа получения контента со страниц сайта.

1. get — запрос с помощью функции file_get_contents ().

Функция позволяет получить содержимое файла в виде одной строки и имеет следующий синтаксис:


string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] )
где filename — путь к файлу.

В случае неудачи функция возвращает FALSE.

В качестве имени файла можно указывать URL, то есть можно указать адрес нужной web-страницы, тогда функция вернет ее содержимое в виде html-кода. Например:

$url = ‘https://webcodius.ru/’;
$result = file_get_contents ($url);

2. Использование библиотеки CURL.

В случае использования CURL код становится более громоздким, но появляется больше различных возможностей, так как библиотека имеет множество настроек и позволяет выполнять get и post запросы.

Получение содержимого страницы состоит из четырех действий:

  • инициализация сеанса с помощью функции curl_init() ;
  • установка нужных параметров с помощью функции curl_setopt() ;
  • выполнение запроса функцией curl_exec() ;
  • закрытие сеанса функцией curl_close() .

if ( $curl = curl_init () ) //инициализация сеанса
<
curl_setopt ($curl, CURLOPT_URL, ‘http://webcodius.ru/’);//указываем адрес страницы
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_HEADER, 0);
$result = curl_exec ($curl);//выполнение запроса
curl_close ($curl);//закрытие сеанса
>

С помощью опции CURLOPT_URL указывается адрес веб страницы, опция CURLOPT_RETURNTRANSFER при ненулевом значении результат будет возвращен, а не выведен.

Если необходимо выполнить POST запрос к удаленному сайту, то необходимо опцию CURLOPT_POST установить в true , а в опцию CURLOPT_POSTFIELDS поместить передаваемые данные:

if ( $curl = curl_init () ) //инициализация сеанса
<
curl_setopt ($curl, CURLOPT_URL, ‘http://webcodius.ru/’);//указываем адрес страницы
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_POST, true);
curl_setopt ($curl, CURLOPT_POSTFIELDS, «i=1»);
curl_setopt ($curl, CURLOPT_HEADER, 0);
$result = curl_exec ($curl);//выполнение запроса
curl_close ($curl);//закрытие сеанса
>

В результате обоих способов в переменную $result попадает контент заданной страницы в виде строки html кода. После этого можно переходить непосредственно к парсингу страницы, то есть к извлечению из содержимого строки нужных данных. Например получить все картинки со страницы или извлечь текстовый контент.

Для парсинга можно воспользоваться регулярными выражениями, но лучше использовать встроенную библиотеку DOMDocument или библиотеку SimpleHTMLDOM.

Передача и обработка параметров HTTP запросов средствами PHP

В этом и следующих разделах будет кратко рассказано о том, как создавать простейшие веб-приложения с использованием PHP. Того, о чем было рассказано в разделе основ программирования на PHP явно недостаточно, чтобы ваше приложение общалось с пользователем и формировало HTML разметку в зависимости от выполненных им действий или введенных им параметров. А чего не хватает? Не хватает знаний о том, как организовать пользовательский ввод данных и передачу этих данных на сервер. Ну а базовые знания о способах программной обработки полученной на сервере информации у вас уже должны быть.

Методы HTTP запросов и их параметры

Любое динамическое веб-приложение формирует ответ пользователю в соответствии с введенными им параметрами или выполненными действиями на стороне клиента. Обращение к серверу чаще всего сводится к двум видам запросов: с использованием метода GET или метода POST. Пару слов о различиях между двумя этими видами запросов.

Параметры передаются в заголовке HTTP запроса, поэтому видны в командной строке, и такой запрос может быть сохранен в закладках. Поскольку общая длина заголовка ограничена, то и количество и длина параметров, передаваемых с помощью GET также ограничена.

Мастер Йода рекомендует:  Как Fluid Grids используются в адаптивном дизайне

Считается, что результаты нескольких, выполненных подряд одинаковых запросов GET должны быть одними и теми же.

Параметры запросов передаются в теле HTTP запроса, поэтому в командной строке их нет. Количество и размер параметров неограничен.

Считается, что результаты нескольких идентичных запросов POST могут возвращать различные значения, поскольку могут изменять свойства целевого объекта.


Метод GET следует использовать для извлечения содержимого информационного ресурса согласно параметрам, когда не требуется вносить изменения в структуры данных целевого ресурса, а запрос (URL) имеет смысл сохранять в закладках. Скорость выполнения метода GET может быть выше аналогичных запросов с использованием метода POST.

Метод POST следует использовать, когда необходимо скрыть из URL передаваемые на сервер параметры. Данный метод также следует использовать в запросах на изменения содержимого целевого ресурса, передавая в параметрах (в теле запроса) описание этих самых изменений.

Общий вид ссылки с параметрами с использованием метода GET выглядит следующим образом:

путь к ресурсу?параметр1=значение1&параметр2=значение2&…

Если у вас нет специальной HTML формы для заполнения параметров, то вы можете отладить работу вашего PHP приложения, передавая тестовые параметры прямо в командной строке браузера, например:

http://codingcraft.ru/php-samples/sql.php?sql=select * from d_staff

Для обращения к параметрам запроса на стороне сервера следует использовать глобальные массивы $_GET и $_POST соответственно. Если вашему приложению все равно, с использованием какого метода к нему обратились, то следует использовать массив $_REQUEST, который объединяет в себе данные массивов $_GET и $_POST, например, так:

$sql = isset($_REQUEST[«sql»]) ? $_REQUEST[«sql»] : «»;

В этом примере программа определяет, был ли передан параметр “sql”: если да, то присваивает соответствующей переменной его значение, и если нет, то присваивает ей пустое значение.

Определение параметров HTTP запроса через HTML форму

Конечно, определять параметры вручную прямо в командной строке браузера не очень удобно. Такой способ подходит для программного выполнения HTTP запросов при общении веб-приложений между собой. Для того чтобы ввести и осуществить первоначальную проверку данных на стороне клиента следует использовать HTML формы и язык программирования JavaScript. Ниже приведен пример простейшей формы, с помощью которой вводится текстовый параметр (значение SQL запроса), который впоследствии передается на сервер в качестве параметра метода POST.

В атрибуте method элемента form указывается метод, определяющий способ передачи данных на сервер (get или post). В атрибуте action указывается php файл, который будет обрабатывать запрос. Если обработчиком должен быть текущий файл, то атрибут action добавлять не нужно. Для всех элементов, чье значение должно быть передано в качестве параметра HTTP запроса следует определить уникальное значение атрибута name . Именно значение атрибута name будет являться индексом в массивах $_GET, $_POST или $_REQUEST (смотрите пример выше). Нажатие на кнопку submit отправляет форму со всеми введенными значениями на сервер.

Опубликовал +автор Июль 30 2012 14:48:01 29268 Прочтений
Компьютерные курсы и курсы программирования

Курс для начинающих программистов на C# и VB.NET.

Построение SQL запросов и работа с базой данных.

Программирование на C#. Краткое руководство.

Применение регулярных выражений.

Примеры программной Plug-in архитектуры.

Язык разметки XML и его расширения с примерами.

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна: решения типовых задач верстки.

Руководство по программированию на PHP для начинающих.


Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

РНР и код, выполняемый на стороне клиента

В главе «Программирование в среде Web» рассматривались динамические технологии, работающие как на стороне сервера, так и на стороне клиента. Разница между этими двумя типами технологий заключается в том, что дополнительные инструкции, встраиваемые в HTML-страницу в первом случае интерпретируются сервером, а во втором – клиентской программой (броузер). PHP позволяет разработчику встраивать в обрабатываемую страницу блоки инструкций, интерпретируемых клиентом. Рассмотрим следующий пример.

AJAX + PHP: применение, взаимодействие, пример

В данной статье поговорим о взаимодействии ajax с php. Как связать работу ajax скрипта и php кода? Как применить ajax в веб разработке? Если вас интересуют такие вопросы, вы найдете на них ответы в нашей статье. А также примеры ajax php кода.

Наши цели

Применение ajax + php

Для того, чтобы понять, нужен ли нам вообще ajax с php, давайте разберемся для чего он может быть полезен. Применение ajax+ php может быть разнообразным, единственное, то что, нельзя конструировать элементы страницы с помощью данной технологии, которые несут в себе релевантность для поисковых систем. Потому что ajax подгружает элементы страницы после ее загрузки при вызове js событий, но как нам известно, поисковые системы не умеют читать javascript кода, поэтому нужно тщательно выбирать где нужно, а где не нужно применять ajax с php.

Где можно применить ajax + php?

1. Добавление нового комментария

3. Авторизация на сайте

4. Организация поиска на сайте (автозавершение)

5. Пошаговая регистрация пользователя на сайте

6. Подписка на e-mail

7. Просмотр фотографий

Как видите вариантов применения ajax + php масса. То есть, можно применить там, где перезагрузка страницы будет не уместной, где нужно просто обменяться данными с сервером.

Где не стоит применять ajax + php

Мое мнение объективное, может вы думаете иначе, но полагаясь на мой опыт скажу что ajax + php не стоит применять:

1. Для реализации меню

2. Реализации вкладок на странице (Например: когда в интернет магазине на странице товара вы видите обзор, информация, комментарии, фото, видео … не нужно делать загрузку данных при переключении данных вкладок.)

И другие негативные примеры, которые могут навредить лучшему ранжированию вашей страницы.

Взаимодействие ajax с php


По сути, технология ajax не может существовать без php скриптов, так как ajax, только отправляет данные на сервер и принимает обратный ответ, при этом не перезагружая страницы. Поэтому правильнее задать вопрос, как связать работу ajax и php. Но об этом мы поговорим в следующем пункте статьи (ajax php пример), а сейчас разберемся с спецификой работы ajax.

Для отправки данных на сервер, нужно создать объект XMLHTTPRequest. С помощью него открыть url (php скрипт), послать на него данные (POST или GET метод), получить ответ, и средствами знаний языка js вывести полученный ответ сервера на монитор (ответом может быть любой фрагмент или элемент страницы сайта).

Для прояснения посмотрите ниже предоставленную схему иллюстрирующую взаимодействие ajax с php.

Ajax + php пример

Для примера взаимодействия ajax с php, создадим два файла:

1. ajax_page.html

2. get_ajax.php

Сначала рассмотрим пользовательскую сторону приложения, то есть ajax_page.html:

ajax_page.html:

Разберем javascript сторону данного примера:

XmlHttp() – функция которая создает объект XMLHttpRequest(), она написана максимально компактно и кроссбраузерно.

ajax(param) – наш обработчик при вызове событий (onclick), принимает в массиве paramнеобходимые данные:

url – куда отсылать данные, причем он может быть в таком виде page.php?parameter=value, то есть информация может передаваться по методу GET.

statbox – ид html блока который будет принимать результаты работы ajax + php приложения.

method – метод отправки данных, может быть POST или GET. В нашем примере мы используем POST метод, но в то же время через url можно передавать информацию GET методом.

data – массив передаваемых данных. В нашем примере, данные автоматически берутся из поля 1 и 2, хотя можно просто писать data: .

success – имя функции или сама функция, которая будет обрабатывать полученные данные (текст).

Вызов функции ajax как вы видите сделан событием onclick=ajax().

Теперь разберем серверную сторону ajax + php приложения, то есть файл get_ajax.php:

Здесь все гораздо проще. Сначала устанавливаем кодировку выходящих данных, с помощью header. Устанавливаем запрет на кеширование данных. sleep(2) – приостанавливает работу скрипта на 2 секунды, это для того, что бы увидеть анимацию ожидания wait.gif. Выводим полученные данные, при этом читая все элементы массива $_POST и преобразуя их в нужную кодировку (для кириллицы).

Для запуска нашего ajax php приложения загружаем в браузер страничку ajax_page.html

Вот что у меня получилось при нажатии кнопки TEST AJAX :

Это ответ, полученный от файла get_ajax.php:


Остались еще вопросы по поводу ajax + php? Задайте их в комментариях ниже…

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

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

До сих пор мы упоминали только, что запросы клиента обрабатываются на сервере с помощью специальной программы. На самом деле эту программу мы можем написать сами, в том числе и на языке PHP , и она будет делать с полученными данными все, что мы захотим. Для того, чтобы написать эту программу, необходимо познакомиться с некоторыми правилами и инструментами, предлагаемыми для этих целей PHP .

Внутри PHP-скрипта имеется несколько способов получения доступа к данным, переданным клиентом по протоколу HTTP . До версии PHP 4.1.0 доступ к таким данным осуществлялся по именам переданных переменных (напомним, что данные передаются в виде пар » имя переменной , символ «=», значение переменной»). Таким образом, если, например, было передано first_name=Nina , то внутри скрипта появлялась переменная $first_name со значением Nina . Если требовалось различать, каким методом были переданы данные, то использовались ассоциативные массивы $HTTP_POST_VARS и $HTTP_GET_VARS , ключами которых являлись имена переданных переменных, а значениями – соответственно значения этих переменных. Таким образом, если пара first_name = Nina передана методом GET , то $ HTTP_GET_VARS [«first_name»]=»Nina» .

Использовать в программе имена переданных переменных напрямую небезопасно. Поэтому было решено начиная с PHP 4.1.0 задействовать для обращения к переменным, переданным с помощью HTTP-запросов, специальный массив – $_REQUEST . Этот массив содержит данные, переданные методами POST и GET , а также с помощью HTTP cookies. Это суперглобальный ассоциативный массив , т.е. его значения можно получить в любом месте программы, используя в качестве ключа имя соответствующей переменной (элемента формы).

Пример 4.2. Допустим, мы создали форму для регистрации участников заочной школы программирования, как в приведенном выше примере. Тогда в файле 1.php , обрабатывающем эту форму, можно написать следующее:

Тогда, если в форму мы ввели имя «Вася», фамилию «Петров» и выбрали среди всех курсов курс по PHP , на экране браузера получим такое сообщение:

После введения массива $_REQUEST массивы $HTTP_POST_VARS и $HTTP_GET_VARS для однородности были переименованы в $_POST и $_GET соответственно, но сами они из обихода не исчезли из соображений совместимости с предыдущими версиями PHP . В отличие от своих предшественников, массивы $_POST и $_GET стали суперглобальными, т.е. доступными напрямую и внутри функций и методов.

Приведем пример использования этих массивов. Допустим, нам нужно обработать форму, содержащую элементы ввода с именами first_name , last_name , kurs (например, форму form.html , приведенную выше). Данные были переданы методом POST , и данные, переданные другими методами, мы обрабатывать не хотим. Это можно сделать следующим образом:

Тогда на экране браузера, если мы ввели имя «Вася», фамилию «Петров» и выбрали среди всех курсов курс по PHP , увидим сообщение, как в предыдущем примере:

Для того, чтобы сохранить возможность обработки скриптов более ранних версий, чем PHP 4.1.0, была введена директива 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 после знака вопроса, можно получить с помощью команды

Благодаря этому можно по методу GET передавать данные в каком-нибудь другом виде. Например, указывать только значения нескольких параметров через знак плюс, а в скрипте разбирать строку запроса на части или можно передавать значение всего одного параметра. В этом случае в массиве $_GET появится пустой элемент с ключом, равным этому значению (всей строке запроса ), причем символ » + «, встретившийся в строке запроса , будет заменен на подчеркивание » _ «.

Методом POST данные передаются только с помощью форм, и пользователь ( клиент ) не видит, какие именно данные отправляются серверу . Чтобы их увидеть, хакер должен подменить нашу форму своей. Тогда сервер отправит результаты обработки неправильной формы не туда, куда нужно. Чтобы этого избежать, можно проверять адрес страницы, с которой были посланы данные. Это можно сделать опять же с помощью функции getenv() :

Теперь самое время решить задачу, сформулированную в начале лекции.

Пример обработки запроса с помощью PHP

Напомним, в чем состояла задача, и уточним ее формулировку. Нужно написать форму для регистрации участников заочной школы программирования и после регистрации отправить участнику сообщение. Мы назвали это сообщение универсальным письмом, но оно будет немного отличаться от того письма, которое мы составили на предыдущей лекции. Здесь мы также не будем отправлять что-либо по электронной почте, дабы не уподобляться спамерам, а просто сгенерируем это сообщение и выведем его на экран браузера. Начальный вариант формы регистрации мы уже приводили выше. Изменим его таким образом, чтобы каждый регистрирующийся мог выбрать сколько угодно курсов для посещения, и не будем подтверждать получение регистрационной формы.

Здесь все достаточно просто и понятно. Единственное, что можно отметить, – это способ передачи значений элемента checkbox . Когда мы пишем в имени элемента kurs[] , это значит, что первый отмеченный элемент checkbox будет записан в первый элемент массива kurs , второй отмеченный checkbox – во второй элемент массива и т.д. Можно, конечно, просто дать разные имена элементам checkbox , но это усложнит обработку данных, если курсов будет много.

Скрипт, который все это будет разбирать и обрабатывать, называется 1.php (форма ссылается именно на этот файл, что записано в ее атрибуте action ). По умолчанию используется для передачи метод GET , но мы указали POST . По полученным сведениям от зарегистрировавшегося человека, скрипт генерирует соответствующее сообщение. Если человек выбрал какие-то курсы, то ему выводится сообщение о времени их проведения и о лекторах, которые их читают. Если человек ничего не выбрал, то выводится сообщение о следующем собрании заочной школы программистов (ЗШП).

Заключение

Подведем итоги. Мы научились отличать клиента от сервера и компьютер — сервер от программы- сервера , познакомились с основными методами, используемыми для передачи данных на сервер , изучили средства, предлагаемые языком PHP для обработки клиентских запросов, и испробовали их на практике. В принципе этого достаточно для того, чтобы создавать клиент-серверные приложения.

Мастер Йода рекомендует:  Lithium Framework c чего начать PHP
Добавить комментарий
Справочные материалы