php - 如何在 PHP 5.4 或更新版本中模拟 register_globals?

标签 php register-globals

我正在开发一个使用 register_globals 的框架。我本地的 php 版本是 5.4。

我知道 register_globals 自 PHP 5.3.0 起已弃用并在 PHP 5.4 中删除,但我必须使此代码在 PHP 5.4 上运行。

有没有什么方法可以在较新版本的 PHP 上模拟功能?

最佳答案

您可以使用 extract 模拟 register_globals在全局 scope :

extract($_REQUEST);

或者使用global和variable variables把它放到独立的函数中

function globaling()
{
    foreach ($_REQUEST as $key => $val)
    {
        global ${$key};
        ${$key} = $val;
    }
}

如果您有一个已发布的应用程序并且不想更改其中的任何内容,您可以创建 globals.php 文件

<?php
extract($_REQUEST);

然后添加auto_prepend_file .htaccess 指令(或在 php.ini 中)

php_value auto_prepend_file ./globals.php

此后代码将在每次调用时运行,应用程序将像旧设置一样运行。

关于php - 如何在 PHP 5.4 或更新版本中模拟 register_globals?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16706098/

相关文章:

javascript - 宏伟的弹出窗口获得帖子父级的永久链接

php - 如果启用了 register_global 怎么办

php - 查找需要 register_globals 的 PHP 脚本

php - 警告 : Unknown: Your script possibly relies on a session side-effect which existed until PHP 4. 2.3

php - 为什么 REGISTER_GLOBALS 这么糟糕?

php - 如何按值删除重复的数组元素并保留最新条目?

php - 使用 jquery ajax 将 javascript 对象转换为 php

javascript - php 中出现未定义索引错误

javascript - Braintree - TokenizeCard 不起作用