在我的旧项目中,将变量用作$ var_name而不是$ _post [“var_name”]。所以我需要更改所有文件中的代码。所以我想在php.ini中改变任何东西((自动提取选项))来处理这个而不改变编码。感谢。
答案 0 :(得分:4)
你的旧项目使用了一个现已弃用的(自5.3以来)和删除(自5.4之后)称为“寄存器全局变量”的功能。请阅读删除此功能的原因:http://php.net/manual/en/security.globals.php
简而言之,不,您不想更改php.ini,以便您的旧应用程序可以正常工作。相反,您更可能希望修复旧的应用程序,使其无需注册全局变量。
也就是说,如果这不是一个面向公众的应用程序或者安全性不是问题,那么有一种方法可以配置php.ini,即使是PHP 5.4也可以让你的应用程序运行。
警告: 这涉及更改php.ini文件,以便模拟注册全局变量的效果。这意味着 所有 PHP脚本将受到注册全局变量的影响, 不 只是你想要的。
如上所述,extract($_REQUEST);
基本上可以实现寄存器全局变量。现在,使用auto_prepend_file
指令,您可以在每个脚本之前运行这行代码。
也就是说,将此文件保存在某个地方(最好是在PHP包含路径中),然后称之为register_globals.php
。
<?php
extract($_POST);
现在在php.ini
中,添加此行(路径可能与您的PHP包含路径相关)。
auto_prepend_file = "register_globals.php" ; emulates register_globals
此更改的效果是require("register_globals.php");
在任何脚本运行之前发生。
答案 1 :(得分:2)
我理解您不愿意更改大量代码,但不管其意味着什么麻烦,都应该纠正错误的设计。将你的全局变为适当的后变量,否则你会后悔。有99%的可能性你最终会自己得出这个结论,现在也可以这样做。
答案 2 :(得分:1)
您需要在php.ini文件中启用register_globals
。请查看此页面了解更多详情 - http://php.net/manual/en/ini.core.php。
答案 3 :(得分:1)
register_globals是获取提交值的旧方法,其名称为变量而不是post,get,request变量。但是在较新版本中已弃用。您需要使用此代码接受$ _post ['email']而不是$ email。