- Методы PHP GET и POST, переменная $_REQUEST
- Метод GET
- Метод POST
- Переменная $_REQUEST
- Как создать GET POST запросы с помощью PHP
- Пояснение кода
- Использование file_get_contents для выполнения POST-запросов
- Использование fread для выполнения POST-запросов
- Как выполнить в PHP GET-запрос
- Использование fread для загрузки или получения файлов через интернет
- Использование file_get_contents для получения URL-адреса сайта
Методы PHP GET и POST, переменная $_REQUEST
Клиенты браузера могут отправлять информацию на веб-сервер.
Прежде чем браузер отправит информацию, он кодирует ее, используя схему, называемую кодировкой URL. В этой схеме пары имя / значение объединяются с равными знаками, а разные пары разделяются амперсандом.
Пробелы удаляются и заменяются символом +, и любые другие неалфанумерные символы заменяются шестнадцатеричными значениями. После того, как информация закодирована, она отправляется на сервер.
Метод GET
Метод GET отправляет закодированную пользовательскую информацию, добавленную к запросу страницы. Страницы и кодированной информации отделены друг от друга ? знаком вопроса.
- Метод GET создает длинную строку, которая отображается в ваших журналах сервера, в поле «Расположение» браузера.
- Метод GET ограничивается отправить ДО только 1024 символов.
- Никогда не используйте метод GET, если у вас есть пароль или другая конфиденциальная информация для отправки на сервер.
- GET не может быть использован для передачи двоичных данных, например , изображения или текстовые документы, на сервер.
- Доступ к данным, отправленным методом GET, можно получить с помощью переменной окружения QUERY_STRING.
- PHP предоставляет ассоциативный массив $ _GET для доступа ко всей отправляемой информации с использованием метода GET.
Попробуйте следующий пример, поместив исходный код в скрипт test.php .
if( $_GET[«name»] || $_GET[«age»] ) < echo "Welcome ". $_GET['name']; echo "You are ". $_GET['age']. " years old."; exit(); > Name: Age:
Метод POST
Метод POST передает информацию через HTTP-заголовки. Информация кодируется, как описано в случае метода GET, и помещается в заголовок QUERY_STRING.
- Метод POST не имеет ограничений на размер данных, которые необходимо отправить.
- Метод POST может использоваться для отправки ASCII, а также двоичных данных.
- Данные, отправленные методом POST, проходят через HTTP-заголовок, поэтому безопасность зависит от протокола HTTP. Используя Secure HTTP, вы можете убедиться, что ваша информация защищена.
- PHP предоставляет ассоциативный массив $_POST для доступа ко всей отправляемой информации с использованием метода POST.
Попробуйте следующий пример, поместив исходный код в скрипт test.php .
if( $_POST["name"] || $_POST["age"] ) < if (preg_match("[^A-Za-z'-]",$_POST['name'] )) < die ("invalid name and name should be alpha"); >echo "Welcome ". $_POST['name']; echo "You are ". $_POST['age']. " years old."; exit(); >
Переменная $_REQUEST
Переменная PHP $_REQUEST содержит содержимое как $_GET, $_POST, так и $_COOKIE. Мы обсудим переменную $_COOKIE, когда мы расскажем о файлах cookie.
Переменная PHP $_REQUEST может использоваться для получения результата из данных формы, отправленных с использованием методов GET и POST.
Попробуйте следующий пример, поместив исходный код в скрипт test.php.
if( $_REQUEST["name"] || $_REQUEST["age"] ) < echo "Welcome ". $_REQUEST['name']; echo "You are ". $_REQUEST['age']. " years old."; exit(); >
Здесь переменная $_PHP_SELF содержит имя собственного скрипта, в котором он вызывается.
Как создать GET POST запросы с помощью PHP
Первый метод, позволяющий выполнить PHP POST запрос, заключается в использовании file_get_contents . Второй метод будет использовать fread в сочетании с парой других функций. Оба варианта применяют функцию stream context create , чтобы заполнить необходимые поля заголовка запроса.
Пояснение кода
Переменная $sPD содержит данные, которые нужно передать. Она должна иметь формат строки HTTP-запроса , поэтому некоторые специальные символы должны быть закодированы.
И в функции file_get_contents , и в функции fread у нас есть два новых параметра. Первый из них — use_include_path . Так как мы выполняем HTTP- запрос , в обоих примерах он будет иметь значение false . При использовании значения true для считывания локального ресурса функция будет искать файл по адресу include_path .
Второй параметр — context , он заполняется возвращаемым значением stream context create , который принимает значение массива $aHTTP .
Использование file_get_contents для выполнения POST-запросов
Чтобы в PHP отправить POST запрос с помощью file_get_contents , нужно применить stream context create , чтобы вручную заполнить поля заголовка и указать, какая « обертка » будет использоваться — в данном случае HTTP :
$sURL = "http://brugbart.com/Examples/http-post.php"; // URL-адрес POST $sPD = "name=Jacob&bench=150"; // Данные POST $aHTTP = array( 'http' => // Обертка, которая будет использоваться array( 'method' => 'POST', // Метод запроса // Ниже задаются заголовки запроса 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $sPD ) ); $context = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $context); echo $contents;
Использование fread для выполнения POST-запросов
Для выполнения POST-запросов можно использовать функцию fread . В следующем примере stream context create используется для составления необходимых заголовков HTTP-запроса :
$sURL = "http://brugbart.com/Examples/http-post.php"; // URL-адрес POST $sPD = "name=Jacob&bench=150"; // Данные POST $aHTTP = array( 'http' => // Обертка, которая будет использоваться array( 'method' => 'POST', // Request Method // Ниже задаются заголовки запроса 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $sPD ) ); $context = stream_context_create($aHTTP); $handle = fopen($sURL, 'r', false, $context); $contents = ''; while (!feof($handle)) < $contents .= fread($handle, 8192); >fclose($handle); echo $contents;
Как выполнить в PHP GET-запрос
Теперь мы уделим внимание использованию fread и file_get_contents для загрузки контента из интернета через HTTP и HTTPS . Чтобы использовать методы, описанные в этой статье, необходимо активировать опцию fopen wrappers . Для этого в файле php.ini нужно установить для параметра allow_url_fopen значение On .
Выполнение POST и GET запросов PHP применяется для входа в систему на сайтах, получения содержимого веб-страницы или проверки новых версий приложений. Мы расскажем, как выполнять простые HTTP-запросы .
Использование fread для загрузки или получения файлов через интернет
Помните, что считывание веб-страницы ограничивается доступной частью пакета. Так что нужно использовать функцию stream_get_contents ( аналогичную file_get_contents ) или цикл while , чтобы считывать содержимое меньшими фрагментами до тех пор, пока не будет достигнут конец файла:
fclose($handle); echo $contents; ?>
В данном случае обработки POST запроса PHP последний аргумент функции fread равен размеру фрагмента. Он, как правило, не должен быть больше, чем 8192 ( 8*1024 ).
Имейте в виду, что он может быть больше или меньше, а также может быть ограничен настройками системы, на которой запускается PHP .
Использование file_get_contents для получения URL-адреса сайта
Еще проще использовать этот метод при считывании файла по HTTP , так как вам не придется заботиться о считывании по фрагментам — все обрабатывается в PHP .