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

Dav*_*ave 3 php forms post get

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

$data = $_GET['data'];

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

谢谢!

Bre*_*mir 6

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

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

foreach ($_GET as $key=>$value) {
    $$key = $value;
}
Run Code Online (Sandbox Code Playgroud)

或者,更简单地说:

import_request_variables("g");
Run Code Online (Sandbox Code Playgroud)

或者,为了让它更安全一点:

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
Run Code Online (Sandbox Code Playgroud)

提取($ _ GET)也可以像其他人指出的那样工作,并且它还允许添加前缀的规范(通过额外的参数)或者如果你的提取与已经存在的变量冲突(例如,如果你在你之后提取)定义了一些其他变量).