如何在PHP中获取所有提交的表单值并自动将其分配给变量?

如何在PHP中获取所有提交的表单值并自动将其分配给变量?,php,forms,post,get,Php,Forms,Post,Get,我正在尝试将网站从一个主机迁移到另一个主机。在第一台主机上,当您提交表单时,所有表单值都会自动插入带有输入名称的变量中(这是PHP)。在新主机上,除非执行以下操作,否则这些值均为null: $data=$_获取['data']; 是否存在导致此问题的PHP配置设置?如果没有,是否有一种简单的方法来循环所有$\u GET变量,并自动将它们的值分配给具有相同名称的变量 谢谢 该设置是register\u globals,但现在已被弃用,强烈建议不要使用它,因为它存在安全风险。任何人都可以在脚本中

我正在尝试将网站从一个主机迁移到另一个主机。在第一台主机上,当您提交表单时,所有表单值都会自动插入带有输入名称的变量中(这是PHP)。在新主机上,除非执行以下操作,否则这些值均为null:


$data=$_获取['data'];

是否存在导致此问题的PHP配置设置?如果没有,是否有一种简单的方法来循环所有$\u GET变量,并自动将它们的值分配给具有相同名称的变量


谢谢

该设置是register\u globals,但现在已被弃用,强烈建议不要使用它,因为它存在安全风险。任何人都可以在脚本中设置变量,这些变量可能以负面或意外的方式与代码交互

如果你必须这样做,你可以这样做:

foreach ($_GET as $key=>$value) {
    $$key = $value;
}
foreach ($_GET["data"] as $name => $value){
  $$name = $value;
}
或者,更简单地说:

import_request_variables("g");
或者,为了更安全一点:

import_request_variables("g", "myprefix_"); // This way forces you to use "myprefix_" 
// in front of the variables, better ensuring you are not unaware 
// of the fact that this can come from a user

extract($\u GET)也可以工作,正如其他人指出的那样,它还允许指定(通过额外参数)添加前缀,或者如果您的提取与现有变量冲突(例如,如果您在定义一些其他变量后提取)该怎么办查看提取函数:

您可以执行以下操作:

foreach ($_GET as $key=>$value) {
    $$key = $value;
}
foreach ($_GET["data"] as $name => $value){
  $$name = $value;
}
这样做的问题是,人们可以很容易地处理脚本中的变量。我可以参观


我建议不要这样做,而只是坚持使用$\u-GET。

您的问题表明,在将$\u-GET['data']分配给$data时,您没有进行任何筛选或验证,除非您在脚本的更深处进行此类检查

从我所看到的情况来看,大多数程序员都会先这样做,以便在预期数据与预期不匹配的情况下尽早失败,因此,在预期正整数的情况下,上述赋值将类似于:

if( isset($_GET['data']) && (int)$_GET['data'] === 0){
//fail
}else{
$data = $_GET['data'];
}
这么说,看得很清楚

$data = $_GET['data'] 

使我畏缩。

配置是
寄存器\u全局文件
,可以通过
提取($\u GET)进行模拟。但真的,不要这样做
register\u globals
被永久弃用-它有严重的安全问题。相反,最好重写你的代码。