Как работать с POST-запросами в PHP
#php #request #post
53241
119
Итак, в прошлом уроке мы вспоминали о том, как происходит работа пользователя с сайтом. Их общение происходит в форме запрос-ответ. Пользователь отправляет в запросе какие-то данные, а сервер возвращает какой-либо ответ, в зависимости от этих данных.
В предыдущем уроке мы научились работать с GET-запросами. Как мы помним, при этом способе данные передаются на сервер с помощью параметров в адресной строке. Такое бывает удобно, когда нам нужно поделиться ссылкой в которой эти параметры нужны. Например, у нас спрашивают, где в Москве купить шкаф. И мы скидываем человеку ссылку на поиск в Яндексе:
https://yandex.ru/search/?text=шкаф%20в%20москве%20купить
Он переходит по ней и прекрасно себя чувствует, потому что всё уже введено за него.
Однако, параметры в адресной строке – это не всегда уместно. Например, когда в параметрах содержится какая-то конфиденциальная информация: пароль, пин-код. И любой мимо проходящий человек может её увидеть. Как в такой ситуации быть? Использовать POST-запросы!
Что это такое? Да всё тот же запрос от клиента к серверу, только параметры передаются внутри тела запроса, а не в адресной строке. И увидеть их просто так не получится.
Что за тело запроса? Ну, это просто данные, которые передаются на сервер. При этом они скрыты от лишних глаз.
Чтобы отправить POST-запрос нужно в HTML-форме задать для атрибута method значение POST.
Вот так:
<html> <head> <title>Форма входа</title> </head> <body> <form action="/login.php" method="post"> <label> Логин <input type="text" name="login"> </label> <br> <label> Пароль <input type="password" name="password"> </label> <br> <input type="submit" value="Войти"> </form> </body> </html>
Данные, отправленные с помощью POST-запроса доступны в PHP в суперглобальном массиве $_POST.
Давайте выведем переданные скриптом выше значения login и password. Для этого в файл login.php положим следующий код:
<?php $login = !empty($_POST['login']) ? $_POST['login'] : ''; $password = !empty($_POST['password']) ? $_POST['password'] : ''; ?> <html> <head> <title>Обработка POST-запроса</title> </head> <body> <p> Переданный login: <?= $login ?> <br> Переданный password: <?= $password ?> </p> </body> </html>
Откройте теперь форму, введите в неё значения и нажмите кнопку «Войти».
Вы увидите введенные вами в форме данные, при этом они будут отсутствовать в адресной строке. Вуаля! Теперь никто не подсмотрит ваш пароль в адресной строке.
Как увидеть тело POST-запроса
Чтобы увидеть данные POST-запроса в браузере, в Google Chrome нужно перейти в режим разработчика. Нажмите клавишу F12, находясь в окне браузера. После этого вы увидите панель разработчика.
Перейдите во вкладку Network, а затем установите галочку напротив пункта Preserve log.
Теперь вернитесь на форму, и снова введите данные, после чего нажмите на кнопку «Войти».
Одновременно с тем, как вы нажмете на кнопку входа, вы увидите в панели разработчика запрос на login.php.
Нажмите на него, и справа откроются детали запроса. По умолчанию открывается исходный код ответа. Здесь можно увидеть то, что было сгенерировано с помощью PHP и отправлено веб-сервером в браузер.
Нас здесь интересует вкладка Headers. Перейдите в неё, и прокрутите содержимое в самый низ. Здесь вы увидите те данные, что браузер отправил на сервер.
Заключение
Вот так и работают POST-запросы под капотом. Используют их всегда, когда не нужно отображать детали запроса в адресной строке. Хорошие примеры: форма авторизации, ввод данных о кредитной карте. Такими данными лучше в адресной строке не светить.
А сейчас — немного нестандартное домашнее задание =)
Если этот урок был вам полезен, расскажите об этом курсе своим знакомым или поделитесь на него ссылкой в социальных сетях.
#php #request #post
53241
119
Методы GET и POST в PHP
В этом руководстве вы узнаете, как отправлять информацию на сервер с помощью методов HTTP GET и POST и как получать эту информацию на сервере.
Методы отправки информации на сервер
Веб-браузер взаимодействует с сервером, как правило, используя один из двух методов HTTP (HyperText Transfer Protocol) — GET и POST. Оба метода передают информацию по-разному и имеют разные преимущества и недостатки.
Метод GET
В методе GET данные отправляются в виде параметров URL, которые обычно представляют собой наборы пар имен и значений, разделенных амперсандами (&). В общем, URL с данными GET будет выглядеть так:
http://www. example.com/action.php?name=vasya&age=33
Части, выделенные жирным шрифтом в URL, являются параметрами GET, а части, выделенные курсивом, являются значениями этих параметров. Более одного набора параметр=значение может быть встроено в URL путем объединения их с амперсандами (&). Методом GET можно отправлять только простые текстовые данные.
Преимущества и недостатки использования метода GET
- Поскольку данные, отправленные методом GET, отображаются в URL-адресе, можно добавить в избранное страницу с определенными значениями строки запроса.
- Метод GET не подходит для передачи конфиденциальной информации, такой как имя пользователя и пароль, потому что они полностью видны в строке запроса URL-адреса, а также потенциально могут храниться в памяти браузера клиента в качестве посещенной страницы.
- Поскольку метод GET назначает данные для переменной среды сервера, длина URL-адреса ограничена. Таким образом, существует ограничение на общее количество отправляемых данных.
PHP предоставляет суперглобальную переменную $_GET для доступа ко всей информации, отправляемой либо через URL, либо через HTML-форму с использованием method=»get».
<!DOCTYPE html> <html lang="en"> <head> <title>Пример отправки данных из формы методом GET</title> </head> <body> <?php if(isset($_GET["name"])){ echo "<p>Привет, " . $_GET["name"] . "</p>"; } ?> <form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Имя:</label> <input type="text" name="name"> <input type="submit" value="Отправить"> </form> </body> </html>
Метод POST
блок 1
В методе POST данные отправляются на сервер в виде пакета в отдельном сообщении со сценарием обработки. Данные, отправленные методом POST, не будут видны в URL.
Преимущества и недостатки использования метода POST
- Это более безопасно, чем GET, потому что введенная пользователем информация никогда не отображается в строке запроса URL или в журналах сервера.
- Существует гораздо больший лимит на количество данных, которые можно передать, и можно отправлять текстовые данные, а также двоичные данные (загрузка файла) с помощью POST.
- Поскольку данные, отправленные методом POST, не видны в URL-адресе, невозможно добавить страницу в закладки с помощью конкретного запроса.
Как и $_GET, PHP предоставляет еще одну суперглобальную переменную $_POST для доступа ко всей информации, отправляемой методом post или отправляемой через форму HTML с использованием method=»post».
<!DOCTYPE html> <html lang="en"> <head> <title>Пример отправки данных из формы методом POST</title> </head> <body> <?php if(isset($_POST["name"])){ echo "<p>Привет, " . $_POST["name"] . "</p>"; } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Имя:</label> <input type="text" name="name"> <input type="submit" value="Отправить"> </form> </body> </html>
Переменная $_REQUEST
PHP предоставляет еще одну суперглобальную переменную $_REQUEST, которая содержит значения переменных $_GET и $_POST, а также значения суперглобальной переменной $_COOKIE.
<!DOCTYPE html> <html lang="en"> <head> <title>Пример работы переменной $_REQUEST</title> </head> <body> <?php if(isset($_REQUEST["name"])){ echo "<p>Привет, " . $_REQUEST["name"] . "</p>"; } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Имя:</label> <input type="text" name="name"> <input type="submit" value="Отправить"> </form> </body> </html>
блок 3
Как использовать глобальную переменную PHP $_POST
Гас
Обновлено
PHP
В этом руководстве мы познакомим вас с основами использования глобальной переменной PHP $_POST для обработки входящих сообщений POST. данные.
Суперглобальная (суперглобальная) переменная $_POST в PHP представляет собой ассоциативный массив переменных, содержащих данные, отправляемые через HTTP-запрос POST. Используя эту переменную, вы можете получить доступ к данным, отправленным в ваш PHP-скрипт из HTML-формы. Вы также можете отправлять данные формы через JavaScript.
Альтернативой $_POST является суперглобальная переменная $_GET. Переменная $_GET позволяет вам получить доступ к данным, отправленным через запрос GET. Параметры запроса GET включены в URL-адрес, например, https://example.com/post.php?test=example
. Текст « test
» — это имя параметра , а « пример
» — это значение .
В этом руководстве рассматриваются основы метода HTTP POST и способы использования глобальной переменной PHP $_POST для обработки запроса POST.
Что такое метод HTTP POST
Метод POST отправляет данные на сервер с использованием протокола передачи гипертекста (HTTP). POST и GET — два наиболее распространенных типа методов HTTP.
В POST-запросах есть несколько ключевых моментов, которые я перечислю ниже.
- Вы можете использовать POST-запросы для отправки конфиденциальных данных (рекомендуется HTTPS).
- Запрос POST никогда не будет кэшироваться.
- Запросы POST не сохраняются в истории браузера и не могут быть добавлены в закладки.
- Нет ограничений на длину данных в POST-запросе.
Вы можете просмотреть тип HTTP-запроса, найдя в запросе заголовок метода .
Пример использования $_POST в PHP
Чтобы получить POST-запрос в PHP, нам потребуется использовать суперглобальную переменную $_POST
. Поскольку это глобальная переменная, вы можете использовать переменную $_POST
в любой области.
Суперглобальная переменная $_POST
представляет собой ассоциативный массив переменных, содержащих данные POST-запроса, отправляемые сценарию. Использовать эту переменную очень просто, как мы быстро объясним ниже.
Сценарий ниже на этой странице демонстрирует, как можно использовать суперглобальную переменную $_POST
для получения и обработки HTTP-запросов POST. Мы рассмотрим каждую часть сценария ниже.
Во-первых, мы создаем форму HTML, которая использует метод HTTP POST для отправки данных. В атрибуте формы action мы указываем наш файл post.php
в качестве URL-адреса для обработки отправки данных формы.
Внутри нашей формы у нас есть ввод, который принимает текст и будет доступен под имя « testString
» в суперглобальной переменной $_POST
. Убедитесь, что каждый вход имеет атрибут name , если вы хотите, чтобы он был доступен в пределах $_POST
, так как использование id не будет работать.
Далее у нас есть ввод типа « submit », позволяющий отправить форму.
Под HTML находится наш скрипт PHP. Во-первых, мы создаем переменную $test_string
и присваиваем ей значение testString
из нашей формы, используя $_POST
суперглобальная переменная.
Наконец, мы делаем простой оператор if else, в котором выводим строку, если она не пуста. В противном случае мы печатаем сообщение о том, что наша строка пуста.
Ниже приведен полный PHP-скрипт, который будет работать, если вы захотите протестировать его самостоятельно.
На приведенном ниже снимке экрана показано, как наша базовая форма выглядит в веб-браузере. При отправке форма отправляет запрос POST на post.php
, который обрабатывает строку и выводит текст под формой.
Заключение
Надеюсь, теперь вы хорошо понимаете запросы HTTP POST и то, как вы можете просматривать их с помощью суперглобальной переменной PHP $_POST. Если вы планируете много обмениваться данными с сервером, вы должны понимать обе эти концепции.
У нас есть еще много руководств по PHP, которые могут оказаться полезными, если вы хотите узнать больше. Например, у нас есть руководства, посвященные обработке переменных в PHP, написанию операторов if-else и многому другому.
Пожалуйста, сообщите нам, если вы заметили ошибку или если важная тема отсутствует в этом руководстве.
Ключевое различие между методами HTTP
АвторLawrence Williams
ЧасыОбновлено
Что такое ПОЛУЧИТЬ?
Метод GET используется для добавления данных формы к URL-адресу в паре имени или значения. Если вы используете GET, длина URL останется ограниченной. Это помогает пользователям представить результат в закладки. GET лучше подходит для данных, которые не требуют какой-либо защиты или имеют изображения или текстовые документы.
В этом GET Vs. Учебник POST, вы узнаете:
- Что такое GET?
- Что такое POST?
- Особенности GET
- Особенности POST
- Пример метода GET
- Пример метода POST
- Разница между GET и POST
- Преимущества GET
- Преимущества POST
- Недостатки GET
- Недостатки POST
Что такое POST?
POST — это метод, который поддерживается HTTP и показывает, что веб-сервер принимает данные, включенные в тело сообщения. POST часто используется World Wide Web для отправки сгенерированных пользователем данных на веб-сервер или при загрузке файла.
Особенности GET
Вот важные особенности GET:
- С помощью метода GET очень легко добавлять данные в закладки.
- Ограничение длины метода GET ограничено.
- Вы можете использовать этот метод только для получения данных из адресной строки в браузере.
- Этот метод позволяет легко сохранять данные.
Особенности POST
Вот важные особенности POST:
- Запрос метода POST получает входные данные из тела запроса и строки запроса.
- Данные, переданные методом POST, не будут отображаться в параметрах запроса в URL-адресе браузера.
- параметры методов POST не сохраняются в истории браузера.
- Нет ограничений на длину передаваемых данных.
- Помогает вам безопасно передавать конфиденциальную информацию, такую как данные для входа, на сервер.
Пример метода GET
Вот пример метода GET:
GET/RegisterStudent.asp?user=value1&pass=value2
Пример метода POST
Вот пример метода POST:
POST/RegisterStudent.asp HTTP/1.1 Хост: www.guru99.com пользователь=значение1&пароль=значение2
Форма, использующая тип содержимого application/x-www-form-urlencoded по умолчанию:
Разница между GET и POST
Вот основные различия между GET и POST:
12 4 | ПОСТ |
---|---|
В методе GET значения отображаются в URL-адресе. | В методе POST значения не отображаются в URL-адресе. |
GET имеет ограничение на длину значений, обычно 255 символов. | POST не имеет ограничений на длину значений, поскольку они передаются через тело HTTP. |
GET работает лучше по сравнению с POST из-за простого характера добавления значений в URL. | Он имеет более низкую производительность по сравнению с методом GET из-за времени, затрачиваемого на включение значений POST в тело HTTP. |
Этот метод поддерживает только строковые типы данных. | Этот метод поддерживает различные типы данных, такие как строковые, числовые, двоичные и т. д. |
Результаты GET можно добавить в закладки. | Результаты POST не могут быть добавлены в закладки. |
Запрос GET часто кэшируется. | Запрос POST трудно кэшировать. |
GET Параметры остаются в истории веб-браузера. | Параметры не сохраняются в истории веб-браузера. |
Ознакомьтесь с нашим руководством по разнице между HTTP и HTTPS: — Нажмите здесь
Преимущества GET
Вот преимущества / плюсы использования GET:
- Метод GET может извлекать информацию, идентифицированную URL-адресом запроса ( Единый идентификатор ресурса).
- запросов GET можно просмотреть в истории браузера.
- Позволяет сохранять результаты формы HTML.
- Вы можете легко использовать метод GET для запроса необходимых данных.
Преимущества POST
Вот преимущества и плюсы использования POST:
- Этот метод помогает определить URI ресурса.
- Указать новый заголовок местоположения ресурса очень просто, используя заголовок местоположения.
- Вы можете отправить запрос на принятие объекта в качестве нового ресурса, который идентифицируется URI.
- Вы можете отправлять пользовательские данные на веб-сервер.
- Это очень полезно, когда вы не имеете ни малейшего представления о ресурсе, который вы должны сохранить в URL-адресе.
- Используйте POST, если вам нужен сервер, который контролирует создание URL-адресов ваших ресурсов.
- POST — это безопасный метод, поскольку его запросы не сохраняются в истории браузера.
- С помощью почты можно легко передавать большие объемы данных.
- Вы можете сохранить данные в тайне.
- Этот метод можно использовать для отправки двоичных данных, а также данных ASCII.
Недостатки GET
Вот недостатки/недостатки использования GET:
- GET нельзя использовать для отправки текстовых документов или изображений.
- Запросы GET можно использовать только для получения данных
- Метод GET нельзя использовать для передачи конфиденциальной информации, такой как имена пользователей и пароли.
- Длина URL-адреса ограничена.
- Если вы используете метод GET, браузер добавляет данные к URL-адресу.
- Вы можете легко добавить значение строки запроса в закладки в GET
Недостатки POST
Вот минусы/недостаток использования POST:
- Невозможно сохранить данные, так как данные, отправленные методом POST, не видны в URL-адресе.
- Вы не видите запросы POST в истории браузера.
- Этот метод несовместим со многими настройками брандмауэра.
- Вы не можете использовать пробелы, табуляцию, резню и т. д.
- Этот метод несовместим с некоторыми настройками брандмауэра.