Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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声明全局变量和会话变量_Php_Global Variables_Session Variables - Fatal编程技术网

PHP声明全局变量和会话变量

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']之间应该

我使用PHP5.3.8已经有一段时间了,我刚刚遇到了一个新的错误

警告:未知:您的脚本可能依赖于会话的副作用 它一直存在到PHP4.2.3。请注意,会议 扩展不考虑全局变量作为数据源, 除非已启用register_globals。您可以禁用此功能 通过设置session.bug\u compat\u 42或 session.bug\u compat\u分别警告关闭。在第0行的未知位置

这里有一个解决方案

然而,我仍然不明白为什么会发生这种情况。就我所知,
$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
不会关闭该功能的警告。