从窗体中 POST 开始的前叉值

2022-08-30 20:13:55

我将一些数据从表单发布到另一个页面。这是一个购物车,根据购物车中的商品数量,在页面上生成要提交的表单。例如,如果只有1个项目,那么我们只有字段名称“item_name_1”,它应该存储一个值,如“贴纸”和“item_price_1”,用于存储该项目的价格。但是,如果有人有5个项目,我们需要“item_name_2”,“item_name_3”等来获取每个项目的值,直到第五个项目。

循环访问这些项目以获取值的最佳方法是什么?

这是我所拥有的,这显然不起作用。

extract($_POST);

$x = 1; // Assuming there's always one item we're on this page, we set the variable to get into the loop

while(${'item_name_' .$x} != '') {

echo ${'item_name' .$x};

$x++;

}

我对这种用法还比较陌生,所以我并不完全是处理它的最佳方法。

谢谢。


答案 1

首先,请不要使用 extract(),这可能是一个安全问题,因为它很容易操作 POST 参数

此外,您不必使用变量名称(听起来很奇怪),而是:

foreach($_POST as $key => $value) {
  echo "POST parameter '$key' has '$value'";
}

要确保您只有以“item_name”开头的参数,您可以按如下方式进行检查:

$param_name = 'item_name';
if(substr($key, 0, strlen($param_name)) == $param_name) {
  // do something
}

答案 2

使用类似数组的字段:

<input name="name_for_the_items[]"/>

您可以遍历以下字段:

foreach($_POST['name_for_the_items'] as $item)
{
  //do something with $item
}

推荐