0

How can I set up a system that reads $_POST data that comes from a form with a user-decided number of inputs? Can I use an index such as $_POST[1] or something similar? (e.g. create/remove pages, submit changes and process an input for as many pages as the user decides they want)

4

4 回答 4

8

在您的表单中创建名称以方括号结尾的输入变量:

<input name="lines[]" type="text"><br>
<input name="lines[]" type="text"><br>
<input name="lines[]" type="text"><br>

您可以根据需要添加任意数量,或在 javascript 中动态创建它们。

提交表单后,数据将在 $_POST 中显示为数组:

echo $_POST['lines'][0];
echo $_POST['lines'][1];
echo $_POST['lines'][2];
于 2013-09-26T23:52:08.283 回答
2

你应该这样做:

foreach($_POST as $k => $v){
    // The action you want to perform for each input
}

我认为,为了制定更高级的解决方案,我们需要更多关于它到底是什么的信息,你想要实现:)

于 2013-09-26T23:50:54.013 回答
1

您可以使用变量 [] 等名称创建字段数组,然后使用 foreach 循环遍历它们。

使用方括号设置变量会将其设置为允许您循环访问它们的数组。如果您需要变量名,您可以通过将它们写在方括号中来动态传递它们。例如:

<input type="text" name="variables[variableName-one]" />
<input type="text" name="variables[variableName-two]" />

使用此方法的好处是您可以通过在 foreach 循环中设置键来在代码中使用数组键名(variableName-one 等)。如同:

foreach($_POST['variables'] as $variableName => $variable){
         echo $variableName.' was set as '.$variable;
}

否则,您可以将其留空,您可以将它们作为数字访问,例如:

$_POST['variables'][1]
于 2013-09-26T23:54:20.213 回答
1

我不知道我是否完全理解你的问题

foreach ($_POST as $key=>$value) {
doSomething($key,$value);
}

您在 $key 中找到了输入名称,在 $value 中找到了它的值。当然,你不能概括太多。例如,如果有复选框并且未选中该复选框,您将不会在 post 数组中获得它。

如果您有一些带有类似名称的数组的输入:您会将它们作为数组获取。

foreach ($_POST as $key=>$value) {
  if(is_array($value)){
     foreach($value as $key2=>$value2){
          doSomethingOther($key,$key2,$value2);
     }
  } else {    
     doSomething($key,$value);
  }
}

但是这样你应该为你能得到的任何输入编写非常具体的代码。或者您必须找到编码输入名称的方法,以便它们向您提示您必须对它们做什么 如果您接受一个用户可以发送给您的所有可能的输入,您可能会面临被劫持的风险。

于 2013-09-27T00:00:09.857 回答