有没有办法保护$ _SERVER全局不被修改?

时间:2015-03-02 09:55:16

标签: php

我想阻止php脚本修改$_SERVER全局内容。

特别是我不想允许

unset $_SERVER['foo'];

但禁止任何修改都会很好,例如模块或php.ini声明。

有吗?

2 个答案:

答案 0 :(得分:0)

如果你控制了根级别脚本,你可以复制它:

$_my_server = $_SERVER;

我认为了解你的理由会有所帮助; $_SERVER变量不应该被包含的脚本修改,因为很少有人需要修改它。它是在运行时生成的,因此任何更改都不会持续到后续的脚本运行。

关于php.ini声明的额外观点更令人困惑 - $_SERVER的许多组件的意思是通知脚本有关这些声明,因此让它发送假数据似乎很奇怪用例,也许不可能。

答案 1 :(得分:0)

不是我所知道的。 如果您在整个代码中依赖$ _SERVER的内容,并且不想要其他代码(插件?)来修改它,那么最好的选择是在应用程序的引导阶段制作副本,然后在整个代码中使用该副本:

$serverDetails = $_SERVER;

$foo = $serverDetails['foo'];