是否有PHP函数来调用表单中的所有变量?

时间:2009-06-14 21:49:30

标签: php forms text input variables

嘿,我正在网站上为客户编写反馈表,但是有100多个输入(都是唯一命名的)。我想知道是否有一个循环我可以运行以获取所有变量,你是否必须像这样调用它们:

$variable = $_REQUEST['variable'];

编辑:

我按照每个人的推荐使用$ _POST - 感谢输入!我只需手动完成并为每个$ _POST写一行。

10 个答案:

答案 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 optionextract 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()

的作用相同