如何在PHP中显示所有在ONCE中传递的隐藏字段值?

时间:2010-07-11 20:54:18

标签: php

让我解释一下。

通常,当隐藏字段从表单传递到表单操作中指定的页面时,可以在处理页面上访问这些隐藏字段,如下所示:

表格:

<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个隐藏字段或数千个,没有限制。

5 个答案:

答案 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++;
}

或者沿着这些方向做什么?