Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否在过帐表单上使用foreach循环处理表单字段?_Php_Variables_Post - Fatal编程技术网

Php 是否在过帐表单上使用foreach循环处理表单字段?

Php 是否在过帐表单上使用foreach循环处理表单字段?,php,variables,post,Php,Variables,Post,我正在发布一份表格的20个结果,将在下一页使用。是否有一种快速发布方式: $UserID1=$\u POST['UserID1'] ID每次都会更改,而不是列出20多次?我想用foreach语句,但我不太确定从哪里开始?您可以使用: 这被认为不是一种好的编程实践,但可以满足您的需要。您可以使用: foreach($_POST as $key => $value){ $$key = $value; //Assign the value to a variable named after

我正在发布一份表格的20个结果,将在下一页使用。是否有一种快速发布方式:

$UserID1=$\u POST['UserID1']

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

您可以使用:

这被认为不是一种好的编程实践,但可以满足您的需要。

您可以使用:

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

这被认为不是一个好的编程实践,但可以实现您想要的功能。

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

foreach($_POST as $key => $value){
  $$key = $value; //Assign the value to a variable named after $key
}
代码,例如:

foreach($_POST as $key => $value){
     $$key = $value; //Assign the value to a variable named after $key
}
允许我将任何表单字段发布到您的页面,并更改任何变量值,例如,假设您在其他地方有类似的代码:

if ($validation) { // Do something }
然后我可以发布一个名为
validation
的表单字段,其值为
1
,并操作您的代码,因为这将为我选择的值分配一个名为
$validation
的变量

使用该代码自动分配所有
$\u POST
值中的变量,与使用
register\u globals
相同,后者由于明显的安全问题而被弃用。见:

如果必须这样做,则必须检查所发布的值是否符合预期。例如,检查是否存在
UserID
。仅当变量以
UserID
开头时,才允许创建变量:

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

这将检查
$\u POST['UserID1']
并创建
$UserID1
$\u POST['UserID2']
并创建
$UserID2

其他答案将很好地完成这项工作,但会引入安全问题

代码,例如:

foreach($_POST as $key => $value){
     $$key = $value; //Assign the value to a variable named after $key
}
允许我将任何表单字段发布到您的页面,并更改任何变量值,例如,假设您在其他地方有类似的代码:

if ($validation) { // Do something }
然后我可以发布一个名为
validation
的表单字段,其值为
1
,并操作您的代码,因为这将为我选择的值分配一个名为
$validation
的变量

使用该代码自动分配所有
$\u POST
值中的变量,与使用
register\u globals
相同,后者由于明显的安全问题而被弃用。见:

如果必须这样做,则必须检查所发布的值是否符合预期。例如,检查是否存在
UserID
。仅当变量以
UserID
开头时,才允许创建变量:

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

这将检查
$\u POST['UserID1']
并创建
$UserID1
$\u POST['UserID2']
并创建
$UserID2

将在UserID之后使用数字吗?是。它将使用
的确切含义,并创建一个名为键的变量(例如
$UserID1
)并为其赋值。因此,如果我要使用UserID添加其他细节,但后面的数字相同,我会创建另一个foreach吗?例如,如果我想要
$UserID1=$\u POST['UserID1']$UserName1=$_POST['UserName1']这一切都发生在一个foreach中。让我解释一下双美元符号在做什么。当它经过
$\u POST['UserID1']时$key='UserID1'和$value='whatever';。现在当我们做
$$key=$value它看起来像是扩展的->
$UserID1='whatever'
非常正确。如果您考虑使用此代码,请查看@ AjRead的答案,以进一步改进它。这将使用USER ID之后的数字吗?是的。它将使用
的确切含义,并创建一个名为键的变量(例如
$UserID1
)并为其赋值。因此,如果我要使用UserID添加其他细节,但后面的数字相同,我会创建另一个foreach吗?例如,如果我想要
$UserID1=$\u POST['UserID1']$UserName1=$_POST['UserName1']这一切都发生在一个foreach中。让我解释一下双美元符号在做什么。当它经过
$\u POST['UserID1']时$key='UserID1'和$value='whatever';。现在当我们做
$$key=$value它看起来像是扩展的->
$UserID1='whatever'
非常正确。如果您考虑使用此代码,请查看@ AjRead的答案,以进一步改进它。