【发布时间】:2018-07-09 16:21:51
【问题描述】:
这是带有会话的简单 php 代码:
<?php
session_start();
function testSession() {
//global $_SESSION;
var_dump($_SESSION['test']);
}
if (!isset($_SESSION['test'])) {
echo " Nope";
$_SESSION['test'] = " Yeap";
} else {
testSession();
}
?>
问题是“$_SESSION”不是超全局的。 "$_SESSION" 在 testSession 函数范围内未定义,它仅在主范围内可见。如果我取消注释“global $_SESSION”,那么一切都会起作用。
更新: 错误是“未定义的变量:_SESSION”行 var_dump($_SESSION['test']);
更新: 如果你写这段代码:
<?php
session_start();
if (!isset($_SESSION['test'])) {
echo " Nope";
$_SESSION['test'] = " Yeap";
} else {
var_dump($_SESSION['test']);
}
?>
一切都会正常工作。
【问题讨论】:
-
我知道这是一个变量作用域,但是“$_SESSION”数组默认是超全局的。这就是为什么它应该在没有全局关键字的情况下在任何地方都可用。
-
当然,默认情况下单独使用而不是在您没有将参数传递给的方法中使用
-
你也在header之前输出。
-
你在哪一行得到错误