Получить все переменные, отправленные с POST?
Мне нужно вставить все переменные, отправленные с post, они были флажками, каждый из которых представляет пользователя.
Если я использую GET, я получаю что-то вроде этого:
?19=on&25=on&30=on
Мне нужно вставить переменные в базе данных.
Как мне получить все переменные, отправленные с POST? Как массив или значения, разделенные комами или что-то еще?
6 ответов:
переменная
$_POST
заполняется автоматически.попробовать
var_dump($_POST);
чтобы просмотреть содержимое.вы можете получить доступ к отдельным значениям такой:
echo $_POST["name"];
это, конечно, предполагает, что ваша форма использует типичную кодировку формы (т. е.
enctype=”multipart/form-data”
если ваши данные post находятся в другом формате (например, JSON или XML, вы можете сделать что-то вроде этого:
$post = file_get_contents('php://input');
и
$post
содержит необработанные данные.предполагая вы используете стандарт
$_POST
переменная, вы можете проверить, если флажок установлен следующим образом:if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes') { ... }
если у вас есть массив чекбоксов (например,
<form action="myscript.php" method="post"> <input type="checkbox" name="myCheckbox[]" value="A" />val1<br /> <input type="checkbox" name="myCheckbox[]" value="B" />val2<br /> <input type="checkbox" name="myCheckbox[]" value="C" />val3<br /> <input type="checkbox" name="myCheckbox[]" value="D" />val4<br /> <input type="checkbox" name="myCheckbox[]" value="E" />val5 <input type="submit" name="Submit" value="Submit" /> </form>
используя
[ ]
в названии флажка указано, что выбранные значения будут доступны PHP скрипту в виде массива. В данном случае$_POST['myCheckbox']
не вернет ни одной строки, но вернет массив, состоящий из всех значений флажков, которые были проверены.например, если я проверил все коробки,
$_POST['myCheckbox']
будет массив, состоящий из:{A, B, C, D, E}
. Вот пример того, как получить массив значений и отобразить их:$myboxes = $_POST['myCheckbox']; if(empty($myboxes)) { echo("You didn't select any boxes."); } else { $i = count($myboxes); echo("You selected $i box(es): <br>"); for($j = 0; $j < $i; $j++) { echo $myboxes[$j] . "<br>"; } }
вы должны иметь доступ к ним из
$_POST
переменной:foreach ($_POST as $param_name => $param_val) { echo "Param: $param_name; Value: $param_val<br />\n"; }
оно уже устарело и не пожелал открыть суперглобальные переменные напрямую (начиная с PHP 5.5 я думаю?)
каждый современный IDE скажет вам:
не суперглобальные переменные напрямую. Используйте некоторые функции фильтра (например,
filter_input
)для нашего решения, чтобы получить все параметры запроса, мы должны использовать метод
filter_input_array
чтобы получить все параметры из метода ввода используйте это:
вы можете использовать его в$myGetArgs = filter_input_array(INPUT_GET); $myPostArgs = filter_input_array(INPUT_POST); $myServerArgs = filter_input_array(INPUT_SERVER); $myCookieArgs = filter_input_array(INPUT_COOKIE); ...
var_dump
илиforeach
петличто не работает, так это доступ к $ _REQUEST Superglobal с помощью этого метода. Он всегда возвращает
NULL
и это правильно.Если вам нужно получить все входные параметры, объединяя различные методы, просто объедините их, как в следующем методе:
function askForPostAndGetParams(){ return array_merge ( filter_input_array(INPUT_POST), filter_input_array(INPUT_GET) ); }
Edit: Расширенная версия этого метода (работает также, когда один из методов запроса не установлен):
function askForRequestedArguments(){ $getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array(); $postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array(); $allRequests = array_merge($getArray, $postArray); return $allRequests; }
так, что-то вроде
$_POST
массив?можно использовать
http_build_query($_POST)
чтобы получить их вvar=xxx&var2=yyy
снова строки. Или простоprint_r($_POST)
чтобы посмотреть, что там.