嘿,我正在网站上为客户编写反馈表,但是有100多个输入(都是唯一命名的)。我想知道是否有一个循环我可以运行以获取所有变量,你是否必须像这样调用它们:
$variable = $_REQUEST['variable'];
编辑:
我按照每个人的推荐使用$ _POST - 感谢输入!我只需手动完成并为每个$ _POST写一行。
答案 0 :(得分:3)
您可以遍历$ _REQUEST数组中的所有变量:
foreach($_REQUEST as $key=>$value){
//doStuff
}
然而,这将包括所有发送参数,而不仅仅是输入。另外,你不应该使用$ _REQUEST而是$ _POST或$ _GET
答案 1 :(得分:3)
如果您不想拥有数百个唯一命名的变量,并希望将数据数组转向客户端,那么您可能需要尝试一种方便的表单技巧。
<form>
<input name="foo[a]" type="text" />
<input name="foo[b]" type="text" />
<input name="bar[]" type="text" />
<input name="bar[]" type="text" />
客户端:
<?php
$_POST['foo']['a'];
$_POST['foo']['b'];
$_POST['bar'][0];
$_POST['bar'][1];
?>
答案 2 :(得分:1)
echo "<pre>";
print_r($_POST); // or $_GET
echo "</pre>";
如果您正在处理可能不知道名称但需要值的项目,那么您正在处理比您想象的更大的问题。
但是,上面的代码段应该在您提交表单时显示所有变量集及其值
答案 3 :(得分:1)
我认为你应该从你期望的所有变量的列表开始,并且只循环那些变量。如果你不这样做,黑客可以注入任何变量名......实际上,你正在重新实现Register Globals这个旧的,非常糟糕的想法。所以,不要这样做......
实际上,为什么不将输入保存在关联数组中,就像$ _POST一样?您可能仍希望删除那些您不期望的值。
答案 4 :(得分:0)
$_GET
和$_POST
数组变量分别包含通过URL或POST方法传递的每个参数。您应该使用该变量而不是像register_globals
option或extract
function那样提取每个项目。请参阅Using Register Globals了解原因。
答案 5 :(得分:0)
如上所述,请勿使用REQUEST,请使用POST。我可能会为每一个写一行,以便我知道发生了什么。你不希望人们发布仍然被解析的额外变量。
答案 6 :(得分:0)
您可以编写简单的代码,以算法方式从已发布的表单中获取所有输入,但这是一项危险的业务,可以开发利用。
答案 7 :(得分:0)
我无法在Pim Jager的帖子中添加评论,但这是一个示例代码:
foreach($_POST as $key=>$value) {
echo($key.' > '.$value.'<br />');
}
答案 8 :(得分:0)
使用包含要从POST复制的字段的数组,并将数据存储在数组中。维护起来要容易得多。
$fields = array("name","email","addr","bla","bla2");
$form = array();
foreach($fields as $field){
$form[$field] = $_POST[$field];
}
现在您已获得$form
内的所有数据
创建表单时也可以做类似的事情。 (虽然它比较棘手......)
干杯!
答案 9 :(得分:0)
foreach($_POST as $key=>$value) {
${$key} = $value;
}
但这与extract()
的作用相同