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

时间:2014-04-08 23:44:02

标签: php variables post

我从表单中发布了20个结果,将在下一页上使用,是否有一种快速的预告方式:

  

$ UserID1 = $ _POST ['UserID1'];

ID每次更改而不是列出20多次?我想到了一个foreach声明,但我不太确定从哪开始呢?

3 个答案:

答案 0 :(得分:2)

您可以使用extract()

extract($_POST);

echo $UserID1; // This now works

这不是一个好的编程习惯,但会做你想做的事。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

其他答案可以很好地完成工作,但是会引入安全问题。

代码如:

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相同,因为它的blatent安全问题已被弃用。请参阅: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 ...