PHP Post变量

时间:2011-08-30 17:52:14

标签: php

在我的旧项目中,将变量用作$ var_name而不是$ _post [“var_name”]。所以我需要更改所有文件中的代码。所以我想在php.ini中改变任何东西((自动提取选项))来处理这个而不改变编码。感谢。

4 个答案:

答案 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。