Php get post

This post is with regards to handling forms that have more than one submit button.

Suppose we have an HTML form with a submit button specified like this:

<input type="submit" value="Delete" name="action_button">

Normally the 'value' attribute of the HTML 'input' tag (in this case "Delete") that creates the submit button can be accessed in PHP after post like this:


We of course use the 'name' of the button as an index into the $_POST array.

This works fine, except when we want to pass more information with the click of this particular button.

Imagine a scenario where you're dealing with user management in some administrative interface.  You are presented with a list of user names queried from a database and wish to add a "Delete" and "Modify" button next to each of the names in the list.  Naturally the 'value' of our buttons in the HTML form that we want to display will be "Delete" and "Modify" since that's what we want to appear on the buttons' faceplates.

Both buttons (Modify and Delete) will be named "action_button" since that's what we want to index the $_POST array with.  In other words, the 'name' of the buttons along cannot carry any uniquely identifying information if we want to process them systematically after submit. Since these buttons will exist for every user in the list, we need some further way to distinguish them, so that we know for which user one of the buttons has been pressed.

Using arrays is the way to go.  Assuming that we know the unique numerical identifier of each user, such as their primary key from the database, and we DON'T wish to protect that number from the public, we can make the 'action_button' into an array and use the user's unique numerical identifier as a key in this array.

Our HTML code to display the buttons will become:

<input type="submit" value="Delete" name="action_button[0000000002]">
<input type="submit" value="Modify" name="action_button[0000000002]">

The 0000000002 is of course the unique numerical identifier for this particular user.

Then when we handle this form in PHP we need to do the following to extract both the 'value' of the button ("Delete" or "Modify") and the unique numerical identifier of the user we wish to affect (0000000002 in this case). The following will print either "Modify" or "Delete", as well as the unique number of the user:

= array_keys($_POST['action_button']);
echo (
$_POST['action_button'][$submitted_array[0]] . " " . $submitted_array[0]);

$submitted_array[0] carries the 0000000002.
When we index that into the $_POST['action_button'], like we did above, we will extract the string that was used as 'value' in the HTML code 'input' tag that created this button.

If we wish to protect the unique numerical identifier, we must use some other uniquely identifying attribute of each user. Possibly that attribute should be encrypted when output into the form for greater security.


Explain when to use GET or POST. Provide example for both the ways.

Both GET and POST are used to collect data from a form. However, when security is desired $_POST should be used. When the $_ POST variable is used, all variables used are NOT displayed in the URL. Also, they have no restrictions to the length of the variables. GET should be used when the interaction with the form is more like a question. For e.g. firing a query etc. POST should be used more often when the interaction is more like an order or the interaction changes the state of the resource.

POST example:

On clicking submit the URL resembles to:

The sample.php file can be used for catching the form data using $_POST

GET Example:

On clicking submit the URL resembles to :

The sample.php file can be used for catching the form data using $_GET

The GET Method

The GET method sends the encoded user information appended to the page request. The page and the encoded information are separated by the ? character. 

  • The GET method produces a long string that appears in your server logs, in the browser’s Location: box.

  • The GET method is restricted to send upto 1024 characters only.

  • Never use GET method if you have password or other sensitive information to be sent to the server.

  • GET can’t be used to send binary data, like images or word documents, to the server.

  • The data sent by GET method can be accessed using QUERY_STRING environment variable.

  • The PHP provides $_GET associative array to access all the sent information using GET method.

Try out following example by putting the source code in test.php script.

 <?php  if( $_GET["name"] || $_GET["age"] ) {  echo "Welcome ". $_GET['name']. "<br />";  echo "You are ". $_GET['age']. " years old.";    exit();  } ?> <html>  <body>    <form action = "<?php $_PHP_SELF ?>" method = "GET">  Name: <input type = "text" name = "name" />  Age: <input type = "text" name = "age" />  <input type = "submit" />  </form>    </body> </html> 

It will produce the following result −


The POST Method

The POST method transfers information via HTTP headers. The information is encoded as described in case of GET method and put into a header called QUERY_STRING.

  • The POST method does not have any restriction on data size to be sent.

  • The POST method can be used to send ASCII as well as binary data.

  • The data sent by POST method goes through HTTP header so security depends on HTTP protocol. By using Secure HTTP you can make sure that your information is secure.

  • The PHP provides $_POST associative array to access all the sent information using POST method.

Try out following example by putting the source code in test.php script.

 <?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']. "<br />";  echo "You are ". $_POST['age']. " years old.";    exit();  } ?> <html>  <body>    <form action = "<?php $_PHP_SELF ?>" method = "POST">  Name: <input type = "text" name = "name" />  Age: <input type = "text" name = "age" />  <input type = "submit" />  </form>    </body> </html> 

It will produce the following result −


The $_REQUEST variable

The PHP $_REQUEST variable contains the contents of both $_GET, $_POST, and $_COOKIE. We will discuss $_COOKIE variable when we will explain about cookies.

The PHP $_REQUEST variable can be used to get the result from form data sent with both the GET and POST methods.

Try out following example by putting the source code in test.php script.

 <?php  if( $_REQUEST["name"] || $_REQUEST["age"] ) {  echo "Welcome ". $_REQUEST['name']. "<br />";  echo "You are ". $_REQUEST['age']. " years old.";  exit();  } ?> <html>  <body>    <form action = "<?php $_PHP_SELF ?>" method = "POST">  Name: <input type = "text" name = "name" />  Age: <input type = "text" name = "age" />  <input type = "submit" />  </form>    </body> </html> 

Here $_PHP_SELF variable contains the name of self script in which it is being called.

It will produce the following result −



In this example we have a small HTML snippet that makes the browser display an entry box and a button. In the opening of the form tag we explicitly said we would want the browser to use the GET method to send the parameters. We actually don’t have to set this explicitly as this is also the default, but it is clearer this way.

After the HTML form there is a PHP snippet that takes a string and using the . concatenation operator, concatenates the value if the $_GET associative array for the the «person_name» key. We used this key as this is the «name» of the input field we are interested in.


 <form method="GET"> <input name="person_name"> <input type="submit" value="Echo"> </form>  <?php  echo "Hello " . htmlspecialchars($_GET["person_name"]); ?> 

If we visit the page we see:

Php get post

That «Hello» at the bottom is there because our PHP code will run no matter what. So even when $_GET[«person_name»] it will still be displayed.

Once we type in our name («Foo» in this case) and click on the «Echo» button, we will see that the page now shows «Hello Foo» and we can also see as the parameters was passed in the URL that can be found in the address bar.

Php get post

What is htmlspecialchars

What is htmlspecialchars and why do we need it? The user can enter any characters in that form. For example the user can type in «<Foo>». If we printed the characters back as we have received them we would print back <Foo>. That however would be invisible as that looks like an unknown HTML tag.

Without htmlspecialchars it would look like this:

Php get post

You can see the parameter in the URL, but not on the page.

If we clicked on «view source» for this page we would see:

Php get post

As you can see in the source we see the text as we typed it in, but that does not show up on the web page.

In order to make sure the browser can display every character as we typed them in we need to call htmlspecialchars on every value we get from the users.

With htmlspecialchars it would look like this:

Php get post

aka. What we expected.

Now if we look at the source of that page we’ll see this:

Php get post

We received back special strings that represent the less-than and greater-than characters so our browser will know it has to display them instead of interpret them as HTML.


In order to see how the POST method works we changed the source code of our PHP file in two places from GET to POST. In the HTML form and in the variable name.


 <form method="POST"> <input name="person_name"> <input type="submit" value="Echo"> </form>  <?php  echo "Hello " . htmlspecialchars($_POST["person_name"]); ?> 

If we look at the page with our browser it will look exactly the same as what we had when had GET there. The difference can be seen after we typed in the name and clicked on «Echo».

The content of the page is still the same, but now the URL does not contain the parameters.

Php get post

GET запрос

Вы могли заметить, что на большинство сайтов можно лицезреть вот такие адреса:

Тут, даже не зная php, можно догадаться, что мы обращаемся к файлу index.php Но то, что идет после знака вопроса, мало кто знает. Все довольно просто: ?blog=2 это объявление глобальной переменной «$_GET[‘blog’]» с значением «2». Таким образом я в скрипт передаю переменную которая отвечает за вывод информации из базы данных. Давайте напишем небольшой скрипт в котором Вы все наглядно увидите:

Мы используем оператор условий if() в качестве условия стоит вот такая строчка:

isset() позволяет узнать существует ли переменная которая указана в скобках, то есть условие которое я описал в коде звучит так: Если существует переменная $_GET[‘blog’] то вывести содержимое этой переменной на экран. Вот что получилось:

Php get post

Думаю понятно Улыбаюсь Создается глобальная переменная $_GET с идентификатором который мы объявили в адресной строке (в данном случае с идентификатором «blog»)

Теперь хочу пояснить один момент. Предположим нам необходимо объявить две переменные, как это сделать? Первая переменная объявляется после знака вопроса «?» Вторая же переменная объявляется после такого знака «&» (Если честно не знаю что это за знак Улыбаюсь), вот пример объявление трех переменных:

Вот код вывода:

Условие звучит так:

Если существует глобальная переменная $_GET[‘a’] и глобальная переменная $_GET[‘b’] и глобальная переменная $_GET[‘с’] то вывести их на экран, вот результат:

Php get post


Прежде чем мы перейдем к post запросам, необходимо разобрать, что такое формы? Почему нужно? Потому что глобальная переменная $_POST[»] создается именно через формы. Что такое форма? Это поля для ввода какой-нить информации пользователем. Поля бывают в одну строчку, большие поля, так же бывают радио кнопочки, чек боксы. Разберем все по порядку…

Форма это тег:

У формы есть атрибуты, перечислю самые распространенные:

  • name=»имя» — Этим атрибутом прописывается имя формы, на мой взгляд не обязательный атрибут, но все же всегда заполняю Улыбаюсь
  • action=»Ссылка на файл» — Этим атрибутом определяется файл обработчик, а именно файл куда Вы посылаете данные
  • method=»post» — Собственно атрибут который говорит форме, что необходимо отправлять post запросы. Так же Вы через формы можете отправлять и get запросы, выставив свойство get а не post.

Давайте создадим форму:

В качестве файла обработчика я поставил файл test.php так как именно в нем пишу для Вас примеры. Метод отправки я поставил post так как именно этим методам пользуются в 99.9% случаях. Так же я присвоил нашей форме имя — form

Теперь окунемся в мир элементов формы. Первым делом Вы должны понять, что почти все элементы являются тегом <input> отличие лишь в атрибуте type у этих тегов. Давайте я перечислю используемые элементы форм:

Php get post

Я уверен, что вы не раз встречали такие поля, так что тут как говорится: «no comments» Улыбаюсь

Теперь давайте составим небольшую тренировочную анкету, с которой будем работать далее. Наша задача составить небольшую анкетку которая поведает нам имя заполнявшего, пол, из какой он страны, любимый цвет и поле текста где пользователь может добавить что-нить о себе. Вот что у меня получилось:

  • Для поля ФИО я использовал одностроковое поле ввода. Атрибут name обязателен для заполнения, почему? Объясню ниже Улыбаюсь
  • Для Выбора пола я использовал радио кнопки, заметьте что атрибут name у них один и тот же… Это сделано для того что бы выбрать можно было лишь один пункт.
  • Страна проживания выводится списком, у списка есть атрибут name у пунктов же (<option>) этого атрибута быть не должно.
  • Любимые цвета выбираются чек боксами. Каждый чек бокс имеет свой атрибут name. Сделано для того чтобы выбрать можно было несколько пунктов.
  • О себе принимает вид большого поля. Заметьте, что я использую атрибуты rows и cols. cols определяет сколько видимых символов может влезть по горизонтали, а rows определяет сколько пользователь увидит строк. С помощью этих атрибутов мы определяем ширину и высоту области.
  • Для кнопки, атрибут name не обязателен, но не для этого примера, в этом примере этот атрибут понадобится. Если в теге кнопки написать атрибут value=»» и в ведя в этот атрибут, например слово «отправить анкету» (value=»отправить анкету») то надпись на кнопке примет значение атрибута value.

Php get post

Обратите внимание, что почти у каждого тега есть атрибут value, для чего он? В него записываются данные которые Вы собираетесь перенести на другую страницу. Надеюсь понятно Улыбаюсь

Теперь если запустить этот код в браузере, то мы увидим следующее:

Php get post

У формы я использовал атрибут action со значением test.php это означает, как я уже говорил, что данные из формы передадутся в файл test.php.

POST запрос

Теперь напишем php код который позволит нам увидеть введенную нами информацию. Где хранятся данные? В случае с get запросом, наши данные лежали в глобальной переменной $_GET[»]. При post запросе, данные будут лежать в глобальной переменной $_POST[»]. В квадратных скобках, необходимо прописывать, как и в случае с глобальной переменной get, идентификатор. Вопрос, где этот идентификатор взять? Вот для чего нам необходим атрибут name у элементов форм! Именно эти имена и служат нам ключом в глобальном массиве post. Ну что ж, приступим к описанию скрипта:

Написанное нами условие if гласит: Если существует глобальная переменная $_POST[‘submit’] то выводим данные на экран. Эта глобальная переменная создается в случае если мы нажали на кнопку отправки, вот для чего в данном примере необходим атрибут name в кнопке. Вы вполне можете задаться вопросом, почему же у кнопки атрибут name не обязательный? Все довольно просто. Обычно программист не отслеживает нажатие кнопки, а отслеживает посланные данные. Для корректной работы, например формы контактов, необходимо отследить не нажатие кнопки, а правильность ввода информации, и узнать вводили ли эту информацию вообще. В нашем же примере мы не проверяли посланные данные, а просто отследили нажатие кнопки, для упрощение примера… Вот что у нас получилось:

Результат работы формы


Ну что ж, за сегодня мы разобрали два метода передачи данных между скриптами, так же галопам познакомились с формами. Очень надеюсь, что эта информация Вам хоть где то пригодится. Если есть какие вопросы, или мысли, пишите комментарии. Удачи Вам, на сегодня у меня все!

Создание 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:

Использование fread для выполнения POST-запросов

Для выполнения POST-запросов можно использовать функцию fread. В следующем примере stream_context_create используется для составления необходимых заголовков HTTP-запроса:

Выполнение GET-запросов с помощью PHP

Теперь мы уделим внимание использованию 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, чтобы считывать содержимое меньшими фрагментами до тех пор, пока не будет достигнут конец файла:

В данном случае обработки POST запроса PHP последний аргумент функции fread равен размеру фрагмента. Он, как правило, не должен быть больше, чем 8192 (8*1024).

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

Использование file_get_contents для получения URL-адреса сайта

Еще проще использовать этот метод при считывании файла по HTTP, так как вам не придется заботиться о считывании по фрагментам — все обрабатывается в PHP.

Перевод статьи «Making POST Requests With PHP» был подготовлен дружной командой проекта Сайтостроение от А до Я.

Метод 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 содержит имя собственного скрипта, в котором он вызывается.

 С уважением, авторы сайта Компьютерапия

Передача переменных при помощи метода GET

Данный метод передачи переменных применяется в PHP для передачи переменных в файл при помощи адресной строки. То есть переменные передаются сразу через адресную строку браузера. Примером может быть, например, ссылка на статью в WordPress без использования ЧПУ (SEF), которая имеет примерно следующий вид:

То есть в данном случае передается переменная $p со значением 315. Теперь давайте более подробно на примере рассмотрим работу метод GET. Пускай нам нужно передать в файл три переменных $a, $b и $c методом GET и вывести их сумму на экран. Для этого можно использовать следующий код.

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

Для проверки работы метода GET достаточно просто добавить к ссылке на файл знак вопроса «?» и через амперсанд «&» перечислить переменные с их значениями. Пускай у нас есть файл get.php, который лежит в корне сайта Для того чтобы передать в файл переменные, достаточно прописать в адресной строке следующее.

Как видно с примера, сначала мы добавляем знак вопроса сразу после названия файла. Далее прописываем переменную и через равно указываем ее значение. После этого через амперсанд аналогичным образом перечисляем другие переменные. Теперь при переходе по этой ссылке нам выведется сумма переменных $a, $b и $c.

Данный способ очень простой и не требует создания дополнительных файлов. Все необходимые данные поступают прямо через адресную строку браузера.

Ну а теперь давайте перейдем ко второму способу передачи переменных в PHP – методу POST.

Передача переменных в PHP при помощи метода POST

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

Код первого файла с формой для отправки данных. Дадим ему название post-1.php


  • action – указываем файл, в который будут передаваться переменные.
  • method – метод передачи переменных. В нашем случае это метод POST.
  • name – название формы. Одновременно в файл будет передана переменная с таким именем.

Текстовые поля:

  • name – имена переменных. В нашем случае это имя и фамилия (переменные name и lastname).
  • type – тип поля. В нашем случае это текстовое поле.


  • name – имя кнопки и переменной, которая будет передана вместе с другими переменными.
  • type – тип кнопки. В нашем случае это кнопка для отправки данных.
  • value – текст на кнопке.

Код второго файла, который будет служить приемником переменных. Назовем его post-2.php

Как и с методом GET, мы первым делом присваиваем переменным значения соответствующих элементов глобального массива POST. Далее для наглядности выводим эти переменные на экран при помощи оператора вывода echo.

Теперь при загрузке первого файла у нас загрузится форма. После введения данных жмем по кнопке «Отправить», в результате чего в новой вкладке у нас откроется страница со вторым файлом, на которой выведутся значения, прописанные в форме на предыдущей странице. То есть второму файлу будут переданы значения переменных с первого файла.

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

На этом все. Удачи вам и успеха в освоении основ PHP.

You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.