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)
问问题
1739 次
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 回答