php post php variable
$_POST
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
$_POST — HTTP POST variables
Description
An associative array of variables passed to the current script via the HTTP POST method when using application/x-www-form-urlencoded or multipart/form-data as the HTTP Content-Type in the request.
Examples
Assuming the user POSTed name=Hannes
The above example will output something similar to:
Notes
See Also
User Contributed Notes 7 notes
One feature of PHP’s processing of POST and GET variables is that it automatically decodes indexed form variable names.
I’ve seem innumerable projects that jump through extra & un-needed processing hoops to decode variables when PHP does it all for you:
Example pseudo code:
Many web sites do this:
When they could do this:
Remember also that using [] as in index will cause a sequential numeric array to be created once the data is posted, so sometimes it’s better to define your indexes explicitly.
// Get the JSON contents
$json = file_get_contents ( ‘php://input’ );
$_POST _is_ set for:
In other words, for standard web forms.
$_POST is NOT set for:
A type used for a generic HTTP POST operation.
For a page with multiple forms here is one way of processing the different POST values that you may receive. This code is good for when you have distinct forms on a page. Adding another form only requires an extra entry in the array and switch statements.
// We have not died yet so we must have less than one.
die( «\$_POST did not contain a known post identifier.» );
>
case ‘Modify’ :
echo «Perform actual code for F2_Submit.» ;
break;
Php post php variable
Когда происходит отправка данных формы PHP-скрипту, информация из этой формы автоматически становится доступной ему. Существует несколько способов получения этой информации, например:
Пример #1 Простая HTML-форма
Есть только два способа получить доступ к данным из форм HTML. Доступные сейчас способы приведены ниже:
Пример #2 Доступ к данным из простой HTML-формы, отправленной через POST
PHP также понимает массивы в контексте переменных формы (смотрите соответствующие ЧАВО). К примеру, вы можете сгруппировать связанные переменные вместе или использовать эту возможность для получения значений списка множественного выбора select. Например, давайте отправим форму самой себе, а после отправки отобразим данные:
Пример #3 Более сложные переменные формы
Имена переменных кнопки-изображения
При отправке формы вместо стандартной кнопки можно использовать изображение с помощью тега такого вида:
HTTP Cookies
Замечание: Начиная с PHP 7.2.34, 7.3.23 и 7.4.11, соответственно, имена входящих cookie больше не декодируются из URL-закодированной строки из соображений безопасности.
Если вы хотите присвоить множество значений одной переменной cookie, вы можете присвоить их как массив. Например:
Обратите внимание, что cookie заменит предыдущую cookie с тем же именем в вашем браузере, если только путь или домен не отличаются. Так, для приложения корзины покупок вы, возможно, захотите сохранить счётчик. То есть:
Пример #4 Пример использования setcookie()
Точки в именах приходящих переменных
Как правило, PHP не меняет передаваемых скрипту имён переменных. Однако следует отметить, что точка не является корректным символом в имени переменной PHP. Поэтому рассмотрим такую запись:
По этой причине важно отметить, что PHP будет автоматически заменять любые точки в именах, приходящих переменных на символы подчёркивания.
Определение типов переменных
Список изменений
Версия | Описание |
---|---|
7.2.34, 7.3.23, 7.4.11 | имена входящих cookie больше не декодируются из URL-закодированной строки из соображений безопасности. |
User Contributed Notes 30 notes
PHP irreversibly modifies field names containing these characters in an attempt to maintain compatibility with the deprecated register_globals feature.
Important: Pay attention to the following security concerns when handling user submitted data :
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:
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:
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.
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:
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:
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.
6 Answers 6
You should either put that variable as an hidden field in your form, or use a session variable.
Hidden field
Session variable
and retrieve it on another page with
Additional info
As pointed out in some answers and comments, you should always check that the variable is present, because you have no guarantee of that. Just use the isset function
As pointed out by Kolink in the comments, a field value (sended via POST) can be easily seen and changed by the user. So always prefer session variables unless it is really non-critical info.
PHP is a server side language! You cannot set a variable and use it on another instance. That means, that PHP resets all the stuff after you process an reload. To setup a variable which is defined after a reload you have to use the current session. See: http://de1.php.net/manual/en/book.session.php
(Note, field type does not have to be ‘hidden’ as posted earlier) If, say, you have code that processes the form from two different types of screens and must change one of the form vars after submission, merely do this in the post-submission code:
to retrieve in another call to the server:
$_POST variables are sent from the previous page to the page you are currently in.
That means you shouldn’t actually set a POST variable, you should only retrieve its content.
If you want to set a post variable for the next time you submit a form, you can do this:
This means the page you are submitting to will be able to access your variable this way:
If you want a variable to stay with a certain user, you should look into sessions.
Метод post php пример пост запроса
Подробно о методе post в php
Что такое метод POST?
Как обозначается метод отправки данных «POST» в форме?
Место обработки данных из метода POST?
Место(условно) где будет происходить обработка только два:
Данные будут обработаны:
Либо на этой странице.
Что нужно, чтобы отправить POST запрос!?
Для того, чтобы отправить post запрос потребуется:
Форма, из которой будет отправляться «post запрос».
Скрипт, который получит, обработает и выведет результат(если это требуется.)
Алгоритм отправки POST запроса!?
Алгоритм отправки данных методом post :
Обрабатываем данные отправление методом пост.
Какие данные отправляет метод POST
На живом примере(следующий пункт) разберем, как передаются данные в методом «POST».
Какой тип данных у POST?
Зачем нужно знать, какое тип у данных в методе POST?
Если вы знаете тип данных, то у соответствующих типах есть свои признаки поведения!
Если мы знаем поведение, то можем управлять этими данными.
Ниже рассматривается пример отправки методом post и получаем результат. и там же выводим массив «$_POST».
После нажатия на кнопку, вы можете вернуться сюда, и посмотреть, что вернет функция var_dump.
Получение массива POST с примером.
Для этого нам понадобится:
Форма из которой будем отправлять данные. Подробно на форме остановимся ниже.
Чтобы приять данные нужно создать такую запись в php, для вывода массива используем print_r:
Если вы размещаете такую запись внутри html документа, нужно, чтобы html понимал php
Соберем весь код для получения и вывода массива POST
Форма для отправки массива POST
У вас есть два варианта:
Просто нажмите на кнопку отправить и вы получите результат «массива POST».
Либо в полях ввода напишите свою информацию.
И нажимаем отправить!
Форма с методом POST
Разберем подробно из чего должна состоять форма для отправки «запроса POST».
Необходимый атрибут method, который будет указывать тип метода, в нашем случае это «POST».
Форму выведем ниже!
Далее нам нужно переданные данные из этой формы обработать!
Как получать данные отправленные методом POST
Для данного поля условие получения данных будет таким:
Полностью можем собрать получение пост запроса из этого input-a :
Тоже самое делаем со вторым полем ввода:
Мы рассмотрели два поля ввода!
Но ведь у нас есть кнопка отправить!
Для данной кнопки можно составить тоже условие и уже внутрь поместить два условия о которых мы сказали выше.
Это будет проверка на отправку данных, т.е. была ли нажата кнопка submit:
Живой пример отправки данных методом POST
Не будем повторять, что уже было сказано, лишь посмотрим на некоторые изменения, которые я внес в форму, чтобы она работала так, как мне нужно здесь.
Чтобы вы не ходили в поисках результата, нам потребуется вернуться к нашему результату в этом пункте, поэтому нам понадобится якорь
И для вывода переданных данных используем echo, использовали два типа кавычек ‘ и «
Полный код выше идущей формы с php обработчиком пост запроса!
Введите какие-то данные в поля ввода и нажмите отправить:
Как отправить POST запрос на другую страницу!?
Первое! Откройте страницу и посмотрите, что там написано!
Теперь наберите текст и отправьте данные. методом post? на другую страницу:
Как работает отправка post запроса на другую страницу!?
Нам понадобится опять форма для отправки каких-то данных:
+ использовали тип hidden(скрытое поле), в котором отправляем ссылку(прост пример. )
В указываем страницу. на которую будем отправлять pos запрос!
Код страницы для приема post запроса
На странице для приема данных переданных через post делаем все абсолютно аналогично, что и выше было рассказано! Создаем условия и проверяем были ли переданы данные методом post!
Пример страницы для приема пост запроса
Вы отправили данные:
Post запрос был отправлен со страницы’;
echo ‘Вы здесь ничего не увидите, пока не отправить пост запрос со страницы со страницы’;
Как устроены переменные в PHP
Вроде простой вопрос, даже не понятно что на него ответить, правда?
Мы все знаем как создать переменную, как получить значение переменной, как взять ссылку на переменную в конце концов.
Но как они работают изнутри?
Что происходит в интерпретаторе, когда вы изменяете значение переменной? Или когда удаляете ее?
Как реализованы типы переменных?
В этой статье я постараюсь раскрыть именно эти темы.
Abstract
Переменные в PHP выражены в виде неких контейнеров, которые хранят в себе тип переменной, значение, кол-во ссылающихся переменных на этот контейнер, и флаг — является ли эта переменная ссылочной.
Отступление про структуры и указатели
Если вы никогда не писали на Си, то возможно не знаете про такие вещи, как структуры и указатели, которые очень широко тут используются и без которых пожалуй было бы очень сложно представить себе хоть сколько нибудь сложную программу на Си.
Структуры очень похожи на классы, только они не могут иметь методов, только данные, указатели на данные и указатели на функции. Объявляя структуру в Си, вы определяете тип данных, и теперь при определении переменной, вы можете написать имя этой структуры на месте типа той переменной, примерно так:
Указатели — это как переменные-ссылки, только их значение — это адрес в памяти. На самом деле, это ссылки как указатели, только они ведут себя как разыменованные указатели. Лучше показать на коде:
Контейнеры
Контейнером служит структура под названием zval, она выглядит так:
В итоге, когда вы будете создавать переменную этого типа, она займет в памяти ровно столько, сколько занимает самый тяжелый элемент юниона.
Зачем столько лишнего?
Теперь разберем — зачем тут, например, какой-то refcount?
А очень просто: когда вы присваиваете переменной значение другой переменной, то они обе ссылаются на один zval, а refcount инкрементируется.
(оригинал с собачкой тут)
Теперь, если вы захотите изменить значение одной из этих переменных, то PHP, увидя refcount больше 1, скопирует этот zval, сделает изменения там, и ваша переменная будет указывать уже на новый zval.
Если это немного формализовать, то это будет выглядеть примерно так:
PHP | Под капотом |
---|
Эта техника называется copy on write и она позволяет неплохо снизить потребление памяти.
Также, refcount нужен сборщику мусора, который удаляет из памяти все zval-ы, у которых refcount = 0.
А что делать с ссылками и зачем вообще этот is_ref?
А что происходит со ссылками? Все очень просто: если вы создаете ссылку от переменной, то флаг is_ref становится равным 1, и больше вышеописанная оптимизация для этого zval-а применяться не будет. Поясню кодом:
PHP | Под капотом |
---|
Конечно, если вы возьмете еще одну ссылку от foo, то refcount zval-а, на который ссылается foo, увеличится на один.
Пожалуй на этом (пока?) все, в следующей части поговорим о массивах.
PS не знаю кто как воспримет эти картинки, мне показалось это будет забавно 🙂 к сожалению сканера у меня нет