PHP – скриптовый язык общего назначения. Применяется преимущественно для веб-разработки и формирования клиент-серверных моделей. Поддерживается большинством хостинг-провайдеров. PHP – непревзойденный лидер для создания динамических веб-страниц.
Сам язык и его интерпретатор под названием Zend Engine разрабатываются группой свободных разработчиков. Этот проект имеет открытый исходный код. Он наделен собственной лицензией, которая не совместима с GNU GPL.
При написании скриптов для обработки форм необходимо использовать метод POST в PHP. Далее он будет рассмотрен более подробно. Эта информация пригодится как новичкам, так и более опытным разработчикам. Дополнительно предстоит изучить метод запроса GET.
Клиент-серверная архитектура
Web базируется на простейшей клиент-серверной архитектуре. Она работает так:
- Клиент (обычно им выступает веб-браузер) формирует и отправляет запрос на сервер.
- В качестве сервера выступают различные веб-серверы: IIS, Apache, Tomcat и другие.
- Для передачи PHP запроса используется протокол HTTP.
- Сервер получает команду от клиента, обрабатывает ее.
- Происходит передача ответа клиенту по аналогичному протоколу.
Выше – пример организации простейшей клиент-серверной модели. Со стороны клиента обычно используется HTML форма. Такое название получил удобный способ настройки и отправки HTTP-запроса для отправки информации на серверную часть.
Определение способа отправки данных
Элемент <form> на PHP-сайте отвечает за метод отправки данных. Все его атрибуты используются для того, чтобы можно быстро настроить запрос на отправку. Происходит это при нажатии на специальную кнопку. Пример – «Отправить». Наиболее важными атрибутами <form> служат:
- action;
- method.
Они должны быть изучены PHP разработчиками перед тем как рассматривать POST и GET.
Атрибут action
Action – параметр, который определяет, куда необходимо отправить данные. Его значение – это актуальный URL-адрес. Если соответствующий атрибут отсутствует, информация передается на URL-адрес страницы, в которой размещается форма.
Выше – пример работы с абсолютным URL. А вот – пример использования относительного веб-адреса. Информация будет передаваться на другой URL в пределах сервера:
Большинство старых веб-страниц, написанных на PHP и других языках, используют такую форму синтаксиса:
Она указывает на то, что информация должна быть направлена на страницу с формой. Связано это с тем, что до HTML5 атрибут action являлся обязательным. Современные PHP сайты избавлены от необходимости использования соответствующего параметра.
Атрибут method
Methods используется для определения способа, которым осуществляется передача информации. Протоколы HTTP позволяют выполнить операцию несколькими способами:
- через GET;
- при помощи метода, name POST.
Каждый раз, когда пользователь хочет получить доступ к ресурсу в Сети, браузер будет отправлять requests на name URL (адрес веб-страницы). HTTP request включает в себя две части: заголовок, включающий в себя набор глобальных метаданных о возможностях интернет-обозревателя, а также тела. В нем может содержаться информация, необходимая серверу для обработки конкретной команды.
Метод GET
Method name GET поддерживает передачу параметров с предыдущей страницы на следующую в составе строки запроса, представленной в формате универсального идентификаторы URL-ресурса. При его использовании для обработки form method к веб-адресу, обозначенному через атрибут action, после разделителя необходимо добавить в виде вопросительного знака указанное имя (name) и значения переменной. После этого вся строка передается обрабатывающему агенту. В случае с PHP и веб-страницами – веб-серверу.
Метод Get используется браузером. Он указывает серверу на то, что нужно передавать на указанный пользователем ресурс.
Выше – пример работы соответствующего элемента. После нажатия пользователем на кнопку с name «Отправить», браузер соединит перечисленные далее компоненты в указанном порядке. Пробелов между ними не будет:
- URL в кавычках, который идет после слова action;
- знак вопроса, указывающий на то, что остальные символы формируют GET-строку;
- переменная name и знак равенства, а также параметр value;
- амперсанд и пара name = value.
Браузер сформирует строчку, указанную выше. Далее он перенаправит ее в пределах собственного адресного пространства в виде нового запроса. Так выглядит PHP сценарий:
А вот – наглядный пример того, как обрабатывается форма:
Обработчик форм получит доступ к каждому передаваемому через GET-метод компоненту при помощи обращения к массиву $_Get.
А вот еще один пример:
За счет использования request name GET, в адресной строке браузера появится URL-адрес. Здесь информация добавляется в качестве последовательности пар name/значение. HTTP-запрос будет выглядеть так:
Здесь на сервер передаются части информации на сервер: say со значением Hi, а также to с параметром Mom.
Особенности Get
Если данные формы передаются через метод with name GET, необходимо запомнить следующее:
- данный метод не может быть применим для создания регистрационных форм;
- каждая операция передачи информации, включая исходные данные, регистрируется в журнале веб-сервера;
- GET не поддерживает присваивание информации переменной среды сервера, поэтому длина URL имеет ограничения.
Второй способ передачи данных на PHP сайте – это method POST.
Работа с POST
POST – это один из нескольких методов запросов, поддерживаемых HTTP-протоколами. Он необходим для того, чтобы направить запрос, при котором веб-сервер принимает данные, заключенные в тело исходного сообщения, для дальнейшего хранения. Пост используется для загрузки документов и представления заполненных веб-форм.
Браузеры используют method name POST PHP для связи с сервером при запросе ответа с учетом информации, написанной в теле HTTP-запроса. If форма отправляется через posted, данные будут добавлены в тело HTTP-запроса. URL-строка не будет подвергаться видимым изменениям.
Так будет выглядеть предыдущий пример, но написанный через POST в PHP:
Когда форма отправляется через соответствующий метод, сведения будут добавлены не в URL-адресе. Набор переданных данных можно найти в теле HTTP-запроса:
Заголовок с name Content-Length задает размер тела, а Content-Type отвечает за тип отправляемых сведений на сервер.
Для создания PHP request типа POST, можно использовать несколько подходов:
- через file_get_contents;
- при помощи fread с другими функциями.
Оба варианта используют stream context create для выполнения необходимых полей заголовка.
Применение file_get
В PHP отправить данные через POST можно посредством file_get_contents. Stream context create в этом случае предстоит применять для того, чтобы вручную заполнять заголовки и указывать тип содержимого (а именно – HTTP):
Выше – наглядный пример того, как выглядит исходный код при реализации рассматриваемого приема.
Использование fread
Чтобы выполнить метод name POST, можно использовать функцию fread. Здесь stream context create применяется для того, чтобы составить заголовки HTTP-запросов:
Данная функция может быть использована для загрузки или получения файлов через интернет (по почте или иным способом).
Считывание веб-страниц ограничивается доступной частью пакета. Необходимо задействовать функцию stream_get_contents или цикл while для считывания содержимого меньшими фрагментами. Происходить это должно до тех пор, пока не будет достигнут конец файла:
Здесь при обработке изучаемой команды последний аргумент функции fread будет равен размеру фрагмента. Он не должен превышать 8 192 (8*1 024).
Просмотр HTTP-запроса
При работе с запросами name HTTP стоит обратить внимание на то, что они никогда не демонстрируются пользователям. Сведения форм обычно отображаются через специальные дополнительные инструменты – Chrome Developer Tools, FireFox Network Monitor и другие.
В Google Chrome submit сведения форм показываются во вкладке «Сеть». Чтобы их увидеть, необходимо:
- Нажать на F12.
- Перейти в Network.
- Щелкнуть по «All», а затем в разделе Name выбрать сайт. В рассматриваемых случаях – это foo.com.
- Кликнуть по «Headers».
Пользователи увидят вызываемый URL name. Запросы GET дадут возможность увидеть сведения в адресе. Если использовался POST, они не отобразятся. Знать об этом необходимо по нескольким причинам:
- Когда требуется отправить пароль или иные важные сведения, нельзя использовать GET. Это связано с безопасностью.
- При отправке большого документа, рекомендуется задействовать POST.
Когда сведения отправлены, остается получить их.
Серверная сторона – получение
Независимо от выбранного HTTP, сервер вернет input type (строку) в виде листа с параметрами ключ/значение. Получение доступа к нему зависит от платформы разработки и особенностей применяемых фреймворков. Наиболее распространенный вариант – это чистый PHP.
В соответствующем языке имеются различные объекты для доступа к сведениям. Пример – при применении POST-метода информация просто выдается пользователю. Дальнейшая ее судьба определяется каждым отдельным человеком.
При обработке фрагмента кода на экране появится следующее:
Здесь будет показана страничка с отправленными сведениями. Когда они переданы на отправку, информация переходит в форму php-example.php. В ней содержится код, представленный выше.
Лучше разобраться с рассмотренной темой помогут дистанционные компьютерные курсы. На них научат писать приложения и создавать клиент-серверные модели на любом понравившемся языке.