让我解释一下。
通常,当隐藏字段从表单传递到表单操作中指定的页面时,可以在处理页面上访问这些隐藏字段,如下所示:
表格:
<form action="process.php" method="POST">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="hidden" name="loginTime" value="1:23PM" />
<input type="hidden" name="userIp" value="173.23.22.5" />
<input type="submit" name="submit" value="Submit" />
</form>
处理页面(process.php):
<?php
if isset($_POST['submit']) {
echo $_POST['username'];
echo $_POST['loginTime'];
echo $_POST['userIp'];
}
?>
您看到我必须按名称和单独调用两个隐藏字段。有什么方法可以调用从表单中传递到页面的所有隐藏字段,尽管这些字段的字段名称是多少还是有多少?
换句话说,如何让PHP执行此操作:
//回显所有隐藏的内容 这里的字段(如果有的话)
其他信息:
表单的设计方式(当然不是上面的那个),字段名称将是以下类型:
product_name_1
product_quantity_1
product_price_1
product_name_2
product_quantity_2
product_price_2
因此增加......
根据用户操作,可能有3个隐藏字段或数千个,没有限制。
答案 0 :(得分:2)
创建一个有效的隐藏字段名称数组,然后遍历$_POST
,如果$ _POST字段名称在有效字段名称数组中,则回显它们。
$valid = array('first_name', 'last_name');
foreach ( $_POST as $key => $value ) {
if ( in_array( $key, $valid ) ) {
echo $_POST[$key];
}
}
答案 1 :(得分:2)
PHP并不关心字段是否隐藏,HTTP不会告诉PHP它是如何出现在网站上的。
我最接近的是保存数组中隐藏字段的所有名称,并在循环中回显它们。
答案 2 :(得分:0)
您可以尝试以下操作:
<form action="process.php" method="POST">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="hidden" name="group_hidden[loginTime]" value="1:23PM" />
<input type="hidden" name="group_hidden[userIp]" value="173.23.22.5" />
<input type="submit" name="submit" value="Submit" />
</form>
然后打印出来:
echo htmlspecialchars(print_r($_POST, true));
这可能会为您提供有关如何解决此问题的线索。
答案 3 :(得分:0)
无法分辨内置输入的类型,因此您需要找到一种方法来识别您自己想要的输入。这可以通过提出特殊的命名方案,或者通过在另一个字段中存储隐藏字段的名称列表来完成。我建议使用前一个选项,因为您不会有某种方式丢失数据完整性的风险。查看使用array_filter
解析数组以获取特殊命名的字段。
答案 4 :(得分:0)
也许,假设您的隐藏字段将按顺序(即1,2,3而不是1,2,4)跟随所有最终用户的操作(添加和删除字段),您可以尝试一些
的行$i = 1;
while(isset($_POST["product_name_$i"]))
{
echo $_POST["product_name_$i"];
echo $_POST["product_price_$i"];
$i++;
}
或者沿着这些方向做什么?