Php send post vars

$_POST

Ассоциативный массив данных, переданных скрипту через HTTP методом POST при использовании application/x-www-form-urlencoded или multipart/form-data в заголовке Content-Type запроса HTTP.

Примеры

Пример #1 Пример использования $_POST

Подразумевается, что пользователь отправил через POST name=Иван

Результатом выполнения данного примера будет что-то подобное:

Примечания

Замечание:

Это ‘суперглобальная’ или автоматическая глобальная переменная. Это просто означает, что она доступна во всех контекстах скрипта. Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.

Смотрите также

User Contributed Notes 6 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:

With the first example you’d have to do string parsing / regexes to get the correct values out so they can be married with other data in your app. whereas with the second example.. you will end up with something like:
var_dump ( $_POST [ ‘person’ ]);
//will get you something like:
array (
0 => array( ‘first_name’ => ‘john’ , ‘last_name’ => ‘smith’ ),
1 => array( ‘first_name’ => ‘jane’ , ‘last_name’ => ‘jones’ ),
)
?>

This is invaluable when you want to link various posted form data to other hashes on the server side, when you need to store posted data in separate «compartment» arrays or when you want to link your POSTed data into different record handlers in various Frameworks.

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.

I know it’s a pretty basic thing but I had issues trying to access the $_POST variable on a form submission from my HTML page. It took me ages to work out and I couldn’t find the help I needed in google. Hence this post.

Make sure your input items have the NAME attribute. The id attribute is not enough! The name attribute on your input controls is what $_POST uses to index the data and therefore show the results.

If you want to receive application/json post data in your script you can not use $_POST. $_POST does only handle form data.
Read from php://input instead. You can use fopen or file_get_contents.

// Get the JSON contents
$json = file_get_contents ( ‘php://input’ );

// decode the json data
$data = json_decode ( $json );
?>

There’s an earlier note here about correctly referencing elements in $_POST which is accurate. $_POST is an associative array indexed by form element NAMES, not IDs. One way to think of it is like this: element «id=» is for CSS, while element «name text» name=»txtForm»>.

Note that $_POST is NOT set for all HTTP POST operations, but only for specific types of POST operations. I have not been able to find documentation, but here’s what I’ve found so far.

In other words, for standard web forms.

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.

if (!empty( $_POST ))
// Array of post values for each different form on your page.
$postNameArr = array( ‘F1_Submit’ , ‘F2_Submit’ , ‘F3_Submit’ );

// Find all of the post identifiers within $_POST
$postIdentifierArr = array();

foreach ( $postNameArr as $postName )
if ( array_key_exists ( $postName , $_POST ))
$postIdentifierArr [] = $postName ;
>
>

// Only one form should be submitted at a time so we should have one
// post identifier. The die statements here are pretty harsh you may consider
// a warning rather than this.
if ( count ( $postIdentifierArr ) != 1 )
count ( $postIdentifierArr ) < 1 or
die( «\$_POST contained more than one post identifier: » .
implode ( » » , $postIdentifierArr ));

// We have not died yet so we must have less than one.
die( «\$_POST did not contain a known post identifier.» );
>

switch ( $postIdentifierArr [ 0 ])
case ‘F1_Submit’ :
echo «Perform actual code for F1_Submit.» ;
break;

case ‘Modify’ :
echo «Perform actual code for F2_Submit.» ;
break;

case ‘Delete’ :
echo «Perform actual code for F3_Submit.» ;
break;
>
>
else // $_POST is empty.
echo «Perform code for page without POST data. » ;
>
?>

Источник

Php send post vars

Nickolay.info. PHP. Передаем параметры формы PHP-скрипту

Значительная часть любой программы на PHP — обработка данных, переданных пользователем через ту или иную HTML-форму. Для PHP версий младше 4.1.0 параметры обрабатывались, как правило, через массивы, которые назывались $HTTP_POST_VARS и $HTTP_GET_VARS для методов передачи данных POST (отдельно от адреса URL) и GET (в URL-адресе) соответственно . Эти массивы нужно было явно объявлять как глобальные кодом

и затем извлекать оттуда данные конструкциями вроде

if (isset($HTTP_POST_VARS['n'])) $n = trim($HTTP_POST_VARS['n']);

Это порождало кучу проблем с безопасностью , в частности, нужно было разрешать в системе глобальные переменные. С версии 4.1.0 стали доступны «суперглобальные» массивы $_POST и $_GET, которые не нужно объявлять и обращаться с которыми значительно проще. Однако, для многих (и часто для меня самого по инерции) их использование свелось к тому, что они лишь перестали писать слово global. В остальном код остается таким же унылым:

$start=''; if (isset($_GET['s'])) $start = trim($_GET['s']); if (empty($start)) $start = 0;

Меж тем, корректная обработка всех разрешенных переменных, переданных скрипту по GET или POST, займёт на PHP всего строк 5 кода. Давайте эти 5 строк сейчас и напишем. Итак, некий скрипт хочет получить данные формы. Для простоты и удобства будем считать, что имена переменных в скрипте совпадают с HTML-атрибутами name нашей формы. Все допустимые параметры перечислим в начале скрипта в виде массива $params, а второй строкой подключим одноименный файл params.php, который создаст соответствующие переменные. Поместить этот код следует на глобальном уровне скрипта, то есть, вне какой-либо функции:

$params = array('id','mode'); require_once ("params.php");

В файле params.php содержится код, нужный для получения перечисленных в массиве переменных, полученных по GET или POST. Если переменную ни одним из методов получить не удалось, скрипт еще и заботливо инициализирует её пустой строкой:

«Волшебным ключиком» здесь является поддержка в PHP типа данных «переменная переменных», позволяющего использовать значение одной переменной в качестве имени другой ($$var).

P.S. Начиная с PHP 7.2 объявлена устаревшей функция each.

Для работы в последних версиях PHP замените в params.php строку

while (list($num,$var) = each($params)) 

Кроме того, в 99% случаях нам требуется от формы следующее: нельзя пропускать от юзера любой HTML (если нужна разметка - есть BBCode и другие безопасные решения); желательно подчистить за юзером лишние пробелы, хотя бы в начале и конце ввода; обязательно нужно разобраться с кавычками, которые для PHP - служебные символы. Все эти задачи и решает вызов trim(htmlspecialchars(magic(. ))) Первые 2 функции в PHP уже есть, а функцию magic, устраняющую проблему с "умными кавычками" независимо от настроек PHP-интерпретатора, мы сейчас напишем:

function magic($path) < if( ini_get('magic_quotes_sybase')=='1')< $path=str_replace('""','"',$path); $path=str_replace("''","'",$path); >else < if(@get_magic_quotes_gpc()=='1')< $path=str_replace('\\"','"',$path); $path=str_replace("\\'","'",$path); $path=str_replace("\\\\","\\",$path); >> return $path; >

Естественно, мы поместим ее тело в модуль функций, подключаемый к каждому скрипту проекта, скажем, с именем functions.php:

Во избежание SQL-инъекций и прочих гадостей следовало бы функцией magic возвращать не просто $path , а mysql_real_escape_string ($path) . Последняя функция - стандартная начиная с PHP 4.3.1, она позволяет "экранировать", то есть, заменить на спец.символы кавычки, которые могли быть переданы нашему запросу хакером, скажем, с целью изменения того, что извлекает запрос. После обработки функцией mysql_real_escape_string , символ ' например, превратится в \' , что, скорее всего, помешает хакеру отправить синтаксически верный запрос. "Лишние" обратные слеши в базу при этом не пишутся.

Числа, полученные через GET или POST, "закавычивать" необязательно, но очень желательно извлекать их явно, с отбрасыванием всего, что не является числом:

Однако, функция mysql_real_escape_string обработает и переводы строк, так что если пропускать через неё абсолютно все внешние данные, то при повторном открытии какого-либо добавленного через форму текста мы можем увидеть вместо

Как поступать? Промучиться с настройками кавычек можно очень долго, я бы совсем отключал их, создав на хостинге файл .htaccess со следующим содержимым:

php_flag magic_quotes_gpc 0 php_flag magic_quotes_runtime 0

Тогда в magic останется только вызов mysql_real_escape_string . Ещё можно добавить строку

set_magic_quotes_runtime(0);

в начале скрипта, чтобы "волшебными кавычками" не портились данные, получаемые во время работы.

В общем, считаем, что данные формы получены в удобном виде, дальше делайте с ними что угодно.

Источник

PHP $_POST

$_POST is a predefined variable which is an associative array of key-value pairs passed to a URL by HTTP POST method that uses URLEncoded or multipart/form-data content-type in request.

$HTTP_POST_VARS also contains the same information, but is not a superglobal, and now been deprecated.

Easiest way to send data to server with POST request is specifying method attribute of HTML form as POST. Assuming that the URL in browser is http://localhost/testscript.php, method=POST is set in a HTML form test.html as below −

The PHP script is as follows:

Example

Output

This will produce following result −

In following example, htmlspecialchars() function is used to convert characters in HTML entities.

Character Replacement
& (ampersand) &
" (double quote) "
' (single quote) ' or '
< (less than) <
> (greater than) >

Assuming that the user posted dta as name=xyz and age=20

Example

"; echo "age: " . htmlspecialchars($_POST["age"]) . "
"; ?>

Output

This will produce following result −

Источник

Читайте также:  Display grid css generator
Оцените статью