Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用POST发送所有变量?_Php_Http Post - Fatal编程技术网

Php 使用POST发送所有变量?

Php 使用POST发送所有变量?,php,http-post,Php,Http Post,我需要插入post发送的所有变量,它们都是代表一个用户的复选框 如果我使用GET,我会得到如下内容: ?19=on&25=on&30=on 我需要在数据库中插入变量 如何让所有变量随POST一起发送?作为一个数组或用comas或其他东西分隔的值?变量$\u POST会自动填充 尝试var\u转储($\u POST)以查看内容 您可以像这样访问单个值:echo$\u POST[“name”] 当然,这假设您的表单使用典型的表单编码(即enctype=“multipart/form

我需要插入post发送的所有变量,它们都是代表一个用户的复选框

如果我使用GET,我会得到如下内容:

?19=on&25=on&30=on
我需要在数据库中插入变量


如何让所有变量随POST一起发送?作为一个数组或用comas或其他东西分隔的值?

变量
$\u POST
会自动填充

尝试
var\u转储($\u POST)以查看内容

您可以像这样访问单个值:
echo$\u POST[“name”]

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

如果您的post数据是另一种格式(例如JSON或XML),您可以执行以下操作:

?19=on&25=on&30=on
$post=file\u get\u contents('php://input');
$post
将包含原始数据

假设您使用的是标准的
$\u POST
变量,您可以测试复选框是否如下所示:

?19=on&25=on&30=on
if(设置($\u POST['myCheckbox'])&&&$\u POST['myCheckbox']=='Yes')
{
...
}
如果您有一系列复选框(例如


val1
val2
val3
val4
瓦尔5
在复选框名称中使用
[]
表示PHP脚本将以数组的形式访问选定的值。在这种情况下,
$\u POST['myCheckbox']
将不返回单个字符串,而是返回一个由选中复选框的所有值组成的数组

例如,如果我选中了所有框,
$\u POST['myCheckbox']
将是一个由以下内容组成的数组:
{A,B,C,D,E}
。下面是一个如何检索值数组并显示它们的示例:

$mybox=$\u POST['myCheckbox'];
如果(空($mybox))
{
echo(“您没有选择任何框。”);
}
其他的
{
$i=计数($mybox);
echo(“您选择了$i框):
”; 对于($j=0;$j<$i;$j++) { echo$myboxes[$j]。“
”; } }
那么,像数组这样的东西


您可以使用
http\u build\u query($\u POST)
再次将它们放入
var=xxx&var2=yyy
字符串中。或者只需
print\r($\u POST)
查看其中的内容。

您应该能够从
$\u POST
变量访问它们:

foreach ($_POST as $param_name => $param_val) {
    echo "Param: $param_name; Value: $param_val<br />\n";
}
foreach($\发布为$param\u name=>$param\u val){
echo“Param:$Param\u name;Value:$Param\u val
\n”; }
为什么不这样做呢,很简单:

extract($_POST);

使用这个u可以得到所有post变量

print_r($_POST)

它已被弃用,不希望直接访问superglobals(因为我认为是PHP5.5?)

每个现代IDE都会告诉您:

不要直接访问超全局。使用一些过滤功能(例如,
filter\u input

对于我们的解决方案,要获取所有请求参数,我们必须使用方法
filter\u input\u 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\u dump
或您的
foreach
-循环中使用它

不起作用的是使用此方法访问$\u请求超全局。它总是返回
NULL
,这是正确的

如果需要通过不同的方法获取所有输入参数,只需按照以下方法合并它们:

function askForPostAndGetParams(){
    return array_merge ( 
        filter_input_array(INPUT_POST), 
        filter_input_array(INPUT_GET) 
    );
}
编辑:此方法的扩展版本(未设置其中一个请求方法时也适用):


可能重复您是否打算在结尾添加示例/链接?谢谢,我实际上只是尝试打印\u r($\u POST),但由于一直在使用GET,因此无法正常工作。我的bad@Liso22不用担心!发生在我们所有人身上:)$post=file\u get\u contents($php://input');节省了我的时间。谢谢。哦,天哪,f**ng php…Gratz 100!你打算在结尾添加一个示例/链接吗?注意到答案末尾的冒号。这是对所问问题的答案。这是一个糟糕的想法;巨大的安全漏洞。这段代码完美地回答了他的问题“如何使用POST发送所有变量?”,而其他答案则不然。最好的答案被否决了,想想看。安全性对他的项目来说可能不是个问题。你是说那些制造php的人发明了这个函数,犯了一个错误,永远不应该使用它吗?@bubbahut完全正确。没有人想要生产代码的所有post变量。我在尝试使用y时遇到了致命的错误我们的建议“$postArray=($tmp=filter\u input\u array(input\u POST))?$tmp:array();”。致命错误常量表达式包含对行号的无效操作5@AshtonMorgan我测试了它(复制粘贴),效果很好。你用什么PHP版本?