Php 使用POST发送所有变量?
我需要插入post发送的所有变量,它们都是代表一个用户的复选框 如果我使用GET,我会得到如下内容: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
?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版本?