php 是否使用POST发送所有变量?

bmvo0sr5  于 2022-12-28  发布在  PHP
关注(0)|答案(6)|浏览(370)

我需要插入所有变量发送后,他们是复选框,每个代表一个用户。
如果我使用GET,我会得到如下的结果:

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

我需要在数据库中插入变量。
我怎样用POST发送所有的变量?作为一个数组或者用逗号分隔的值或者其他什么?

idv4meu8

idv4meu81#

变量$_POST将自动填充。
尝试var_dump($_POST);查看内容。
您可以按如下方式访问各个值:echo $_POST["name"];
当然,这是假设您的表单使用典型的表单编码(即enctype=”multipart/form-data”
如果您的帖子数据是其他格式(例如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>";
    }
  }
exdqitrt

exdqitrt2#

您应该能够从$_POST变量访问它们:

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

vawmfj5a3#

它已经过时了,不希望直接访问超级全局变量(我想是从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-Loops中使用它
不起作用的是用这个方法访问$_REQUEST超全局。它总是返回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;
}
bvjxkvbb

bvjxkvbb4#

那么,类似于$_POST数组的东西呢?
你可以用http_build_query($_POST)把它们重新放到一个var=xxx&var2=yyy字符串中,或者直接用print_r($_POST)来看看里面有什么。

k5hmc34c

k5hmc34c5#

为什么不这样呢,很简单:

extract($_POST);
n7taea2i

n7taea2i6#

使用此u可以获取所有post变量

print_r($_POST)

相关问题