Php 是否在过帐表单上使用foreach循环处理表单字段?
我正在发布一份表格的20个结果,将在下一页使用。是否有一种快速发布方式: $UserID1=$\u POST['UserID1'] ID每次都会更改,而不是列出20多次?我想用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
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的答案,以进一步改进它。