获取通过POST发送的所有variables?

我需要插入所有发送的variables,他们是每个代表一个用户的checkbox。

如果我使用GET,我得到这样的东西:

?19=on&25=on&30=on 

我需要在数据库中插入variables。

我如何获得与POST发送的所有variables? 作为一个数组或值与昏迷或东西分开?

variables$_POST自动填充。

试试var_dump($_POST); 看内容。

您可以像这样访问各个值: echo $_POST["name"];

这当然,假设你的表单正在使用典型的表单编码(即enctype=”multipart/form-data”

如果你的发布数据是另一种格式(例如JSON或XML,你可以做这样的事情:

 $post = file_get_contents('php://input'); 

$post将包含原始数据。

假设你正在使用标准的$_POSTvariables,你可以testingcheckbox是否像这样被选中:

 if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes') { ... } 

如果你有一个checkbox(例如

 <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> 

在checkbox名称中使用[ ]表示所选值将被PHP脚本作为数组访问。 在这种情况下, $_POST['myCheckbox']不会返回一个单一的string,但会返回一个数组,其中包含所有被选中的checkbox的值。

例如,如果我检查了所有的框, $_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): "); for($j = 0; $j < $i; $j++) { echo($myboxes[$i] . " "); } } 

你应该能够从$_POSTvariables访问它们:

 foreach ($_POST as $param_name => $param_val) { echo "Param: $param_name; Value: $param_val<br />\n"; } 

那么,像$_POST数组?

您可以使用http_build_query($_POST)将它们重新获取到var=xxx&var2=yyystring中。 或者只是print_r($_POST) ,看看有什么。

为什么不呢,这很容易:

 extract($_POST); 

使用这个你可以得到所有的postvariables

 print_r($_POST) 

它被弃用,不希望直接访问超全域(因为PHP 5.5我认为?)

每个现代的IDE都会告诉你:

不要直接访问Superglobals。 使用一些filterfunction(例如filter_input

对于我们的解决scheme,要获取所有的请求参数,我们必须使用filter_input_array方法

要从input法获得所有的参数,使用这个:

 $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 ,这是正确的。

如果你需要得到所有的input参数,通过不同的方法,就像下面的方法合并它们:

 function askForPostAndGetParams(){ return array_merge ( filter_input_array(INPUT_POST), filter_input_array(INPUT_GET) ); } 

编辑:此方法的扩展版本(也适用于其中一个请求方法未设置时):

 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; }