Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用$\u ENV而不是$\u SESSION_Php_Session_Env - Fatal编程技术网

PHP使用$\u ENV而不是$\u SESSION

PHP使用$\u ENV而不是$\u SESSION,php,session,env,Php,Session,Env,使用$\u ENV保存全局脚本变量而不是使用$\u会话是否有危险?我理解这两个超全局之间的区别,但不确定在$\u会话上使用$\u ENV会产生什么影响?$\u会话是否提供了更高的安全性 它们是两个完全不同的东西 :包含可用于当前脚本的会话变量的关联数组 :通过环境方法传递到当前脚本的变量的关联数组。不能使用$\u ENV代替$\u SESSION。 就这些 您可以设置的任何环境变量都只能用于同一个PHP实例(它将在几秒钟内消失)它所做的是访问环境变量。函数getenv()和setenv()应用于

使用$\u ENV保存全局脚本变量而不是使用$\u会话是否有危险?我理解这两个超全局之间的区别,但不确定在$\u会话上使用$\u ENV会产生什么影响?$\u会话是否提供了更高的安全性

它们是两个完全不同的东西

:包含可用于当前脚本的会话变量的关联数组


:通过环境方法传递到当前脚本的变量的关联数组。

不能使用$\u ENV代替$\u SESSION。
就这些


您可以设置的任何环境变量都只能用于同一个PHP实例(它将在几秒钟内消失)

它所做的是访问环境变量。函数
getenv()
setenv()
应用于此操作

环境变量:

这些变量由系统设置,也可以添加到Apaches配置文件或.htaccess中。 示例:在apache中,您可以使用
SetEnv ENV_VARNAME foobar


但是会话(或cookie)与变量不同。会话可以在多个请求上保持状态,而变量或全局变量则不能。去

打劫他们中没有人“提供安全”,他们只是两个完全不同的概念。。。什么会表明它们是可互换的?(请阅读文档以了解概述和适用的地方。)@pst-不太可能,两者都是超级全局的,都存储全局数据,都是全局可用的。只是访问范围不同。文档建议使用$\u ENV来存储globals,而不是使用“global”,但是$\u ENV仅对当前实例可用。然而,回到问题上来,我在一些应用程序中看到的是,人们将会话数据存储在$_ENV中,然后再写回会话。有没有我不明白的特殊原因?例如,成功,保存会话状态?糟糕的编程?@ws8再次回顾一下它们都是可索引的、可变的和以某种形式映射键/数据的事实,它们是两个完全不同的概念:它们不可互换。就这些。这一点在处理这些变量的文档中非常明显。@pst-让我换一句话-假设您的应用程序调用了很多函数,并且严重依赖全局变量,那么使用$\u ENV保存应用程序全局变量(假设脚本结束后您不需要这些变量)是可以接受的,还是应该改用$\u会话。手册中没有明确说明“您不得出于自己的目的使用$_ENV”,但它是否滥用了$_ENV?哦,是的,我误读了这一部分。是,但根据所需的范围,您可以使用这两种方法来存储全局。全局?范围你在说什么?根据$_ENV上的php手册:“这是一个‘超全局’或自动全局变量。这只是意味着它在整个脚本的所有作用域中都可用。不需要执行全局$variable;就可以在函数或方法中访问它。”。因此$\u ENV可用于存储当前实例外部不需要的应用程序全局变量。但是$_ENV的这种用法可以接受吗?@ws8忘记了每个集合都是“超全局的”。在这次谈话中,这是一个肤浅的概念。每个集合都由具有不同语义的不同源支持。