在发布表单上使用 foreach 循环处理表单字段


Process form fields with foreach loop on posting form?

我正在发布表单中的 20 个结果,以便在下一页使用,是否有一种快速的发布方式:

$UserID 1 = $_POST['用户 ID1'];

ID每次都会更改而不是列出20多次?我想过一个 foreach 语句,但我不太确定从哪里开始?

您可以使用

extract()

extract($_POST);
echo $UserID1; // This now works

这不被认为是一个好的编程实践,但会做你想做的事。

其他答案可以很好地完成这项工作,但是它们引入了安全问题。

代码如下:

foreach($_POST as $key => $value){
     $$key = $value; //Assign the value to a variable named after $key
}

允许我将我希望的任何表单字段发布到您的页面并更改任何变量值,例如,假设您在其他地方有这样的代码:

if ($validation) { // Do something }

然后,我可以发布一个名为 validation 的表单字段,其值为 1 并操作您的代码,因为这会将一个名为 $validation 的变量分配给我选择的值。

使用该代码自动从所有$_POST值中分配变量,与使用该register_globals相同,由于其明显的安全问题而被弃用。参见:http://www.php.net/manual/en/security.globals.php

如果必须执行此操作,则必须检查发布的值是否是预期值。例如,检查是否存在UserID 。这仅允许创建以 UserID 开头的变量:

foreach($_POST as $key => $value) {
    if (substr($key, 0, 6) == 'UserID') {
        $$key = $value; //Assign the value to a variable named after $key
    }
}

这将检查$_POST['UserID1']并创建$UserID1$_POST['UserID2']并创建$UserID2...

foreach($_POST as $key => $value){
  $$key = $value; //Assign the value to a variable named after $key
}