首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中安全有效地引用$_SERVER['DOCUMENT_ROOT']

如何在PHP中安全有效地引用$_SERVER['DOCUMENT_ROOT']
EN

Stack Overflow用户
提问于 2015-04-27 11:49:48
回答 1查看 1.2K关注 0票数 0

为了避免使用superglobals,我似乎必须使用这样的方法:

$doc_root = filter_input(INPUT_SERVER, 'DOCUMENT_ROOT');

以获取文档根目录。但是如果没有指定的过滤器--这就是FILTER_UNSAFE_RAW .要使用什么过滤器,是否有一个为路径预先定义的过滤器,或者我是否需要使用regex来创建自己的过滤器。

既然我已经过滤了$doc_root,那么每次我想使用它时,我都会从$_SERVER超级全局数组中重新过滤吗?或者,我应该在函数的内部声明global $doc_root,然后使用它(或者引用$GLOBALS数组更好吗?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-27 12:59:11

使用超级球体本身并不坏。但是您应该在代码中避免它们,因为这增加了对环境的隐藏依赖,并使代码更难测试。

因此,如果您关心这个隐藏的依赖项,您应该在前面的控制器中获取值,并使用它注入类中。或者,如果使用DI容器,则可以定义返回此值的服务。

在这里,使用filter_input函数根本没有帮助--它只是隐藏了超级全局访问。

也许更安全的选择确实是使用__DIR__常量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29894905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档