PHP声明全局变量和会话变量
我使用PHP5.3.8已经有一段时间了,我刚刚遇到了一个新的错误 警告:未知:您的脚本可能依赖于会话的副作用 它一直存在到PHP4.2.3。请注意,会议 扩展不考虑全局变量作为数据源, 除非已启用register_globals。您可以禁用此功能 通过设置session.bug\u compat\u 42或 session.bug\u compat\u分别警告关闭。在第0行的未知位置 这里有一个解决方案 然而,我仍然不明白为什么会发生这种情况。就我所知,PHP声明全局变量和会话变量,php,global-variables,session-variables,Php,Global Variables,Session Variables,我使用PHP5.3.8已经有一段时间了,我刚刚遇到了一个新的错误 警告:未知:您的脚本可能依赖于会话的副作用 它一直存在到PHP4.2.3。请注意,会议 扩展不考虑全局变量作为数据源, 除非已启用register_globals。您可以禁用此功能 通过设置session.bug\u compat\u 42或 session.bug\u compat\u分别警告关闭。在第0行的未知位置 这里有一个解决方案 然而,我仍然不明白为什么会发生这种情况。就我所知,$foo和$\u会话['foo']之间应该
$foo
和$\u会话['foo']
之间应该没有歧义
我试过在网上测试一些脚本,人们说会抛出这个错误,但他们不会在我的系统上抛出警告,而我得到这个警告的脚本非常复杂,为了复制错误,将其拆分为几行是有问题的
然而,我把它缩小到了一行
$bonus = isset($_GET['bonus']) ? $_GET['bonus'] : '';
$\u SESSION['bonus']
在上一页中设置为null
,并且register\u globals在大约PHP4.2之后已关闭,因此不能作为$\u GET范围
这让我回到我的第一点;为什么$bonus
和$\u会话['bonus']
之间突然出现问题?我突然说,因为我在另一个站点(同一个框)上使用了这个脚本,我没有收到任何错误
有人能给我指一指可能更详细地解释PHP如何处理会话变量等以及为什么这两个变量之间存在问题的地方吗
谢谢
[更新]
看看这里;它确实提到:
[PHP有…]一个未记录的特性/错误,允许您初始化会话变量
在全球范围内
我想除此之外可能没有更多的话要说了。我觉得奇怪的是,PHP在
$\u SESSION['foo']
/$foo
时出现问题$foo..尝试将会话设置为关闭。bug\u compat\u 42
将关闭警告所涉及的功能。c、 这个问题对我来说不够清楚。@HermannStephaneNtsamo问题是;为什么声明与会话变量同名的变量会引发此警告?嗨,Adder,感谢链接,我知道如何关闭此警告,但我只是想了解更多有关它发生的确切原因的信息,而不是忽略它。嗯,在阅读文档时,如果该功能处于启用状态,您可以分配给全局$alert
以设置$\u会话['alert']
。和session.bug\u compat\u 42
不会关闭该功能的警告。