Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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_Session_Isset - Fatal编程技术网

PHP会话变量是否已设置?

PHP会话变量是否已设置?,php,session,isset,Php,Session,Isset,下面是一段从单个.php文件顶部逐字复制和粘贴的代码: if (!isset($_SESSION)) { session_start(); } require_once('rb.php'); require_once('Util.php'); echo("Here is the session: "); echo(print_r($_SESSION, true)); $isDevel = $_SESSION['isDevel']; print_r("isDevel is: $isDevel\

下面是一段从单个.php文件顶部逐字复制和粘贴的代码:

if (!isset($_SESSION)) { session_start(); }

require_once('rb.php');
require_once('Util.php');

echo("Here is the session: ");
echo(print_r($_SESSION, true));
$isDevel = $_SESSION['isDevel'];
print_r("isDevel is: $isDevel\n");

if (! isset($_SESSION['isDevel'])) {
    die("connections.php: isDevel needs to be set by now!  SESSION: " . 
      print_r($_SESSION, true));
}
以下是执行过程中的输出:

Here is the session: Array
(
    [isDevel] => This is a string.
    [configObj] => 
)
isDevel is: This is a string.
connections.php: isDevel needs to be set by now! SESSION: Array ( [isDevel] => This is a string. [configObj] => )
显然$\u SESSION['isDevel']已设置,否则我将无法打印出来。但是
isset
测试失败,声称
$\u会话['isDevel']
没有定义,但同样地,还是打印出来了

我查过文件,但看不出我是怎么搞砸的

编辑:

JA询问将某物分配给会话的代码。这是(来自另一个文件):

Chris评论说,他认为我运行的代码与我发布的代码不同。不是真的。也许你的意思是,除了这里发布的代码,还有更多的事情在发生?如果是这样的话,那么是的,但是由于代码分布在多个文件中,我无法将其压缩得比我已有的更好

无论如何,让我明确一点:我上面发布的代码是按照您看到的顺序执行的。[虽然我看到我省略了echo(),因此第一次打印不可见--我将在预编辑问题描述中解决这一问题,以避免太多混淆;为了清晰起见,我将添加我省略的两个require_once目标,以便代码是逐字复制和粘贴的。],尽管我们可以在$\u会话数组中看到该死的isDevel,但它没有通过isset测试

我至少感到欣慰的是,人们怀疑我的行为不检点,因为这证明这个问题足够微妙,可以给出一个明显的解释:)

编辑2:

报告这件事很尴尬,但我觉得我应该感谢那些花时间帮助我的人。问题是一个复制粘贴错误——我报告的代码确实执行了。但是我引用的代码并不是负责输出“isDevel现在需要设置!”的代码,而是我错误地剪切和粘贴了该消息,然后忘记编辑文本以反映粘贴位置的语义。所以代码被执行了,但它并没有表现出我所认为的奇怪行为


很抱歉浪费了你们的集体时间。我应该更聪明地进行bug搜索。

在检查会话变量之前启动会话

session_start();
if(!isset($_SESSION['isDevel'])) {
//code here
}

在检查会话变量之前启动会话

session_start();
if(!isset($_SESSION['isDevel'])) {
//code here
}

您能提供分配$u SESSION['isDevel']值的代码吗?我认为您实际运行的代码与您在此处为我们发布的代码不同。我认为您对它进行了总结,并遗漏了一个重要的细节。请尝试删除
之间的空格
isset
。删除空间不会产生任何效果。您正在运行哪个版本的PHP?你自己造的吗?你在哪个平台上?你能提供你分配$_SESSION['isDevel']值的代码吗?我认为你实际上运行的代码与你在这里为我们发布的代码不同。我认为您对它进行了总结,并遗漏了一个重要的细节。请尝试删除
之间的空格
isset
。删除空间不会产生任何效果。您正在运行哪个版本的PHP?你自己造的吗?你在哪个平台上?我引用的第一行代码开始一个会话。但以防万一,我是按你的方式做的(如果会话已经启动,将产生警告消息。)运气不好。我引用的第一行代码启动会话。但以防万一,我是按你的方式做的(如果会话已经开始,将产生警告消息。)运气不好。