首页 > 解决方案 > $_SESSION 变量未设置值

问题描述

[已解决]在我的login.php
中 ,设置了几个$_SESSION变量。
我最近添加了另一个 = $_SESSION['darkM'] = false;
做一个var_dump($_SESSION);(结果如下),我的其他变量的值设置得很好,但这个不会

我尝试将其设置为字符串'test'),但在 var_dump 中仍然返回空。只有这个变量不会设置。
我检查了我的error_log,什么都没有!只是为了澄清,session_start();已经设置在我声明变量的上方。知道为什么会发生这种情况吗?


- - - 编辑 - - -

登录.php

<?php
session_start();

   // Store data in session variables
   $_SESSION["loggedin"] = true; // No error
   $_SESSION["tenant"] = $tenant; // No error
   $_SESSION['darkM'] = false; // Also tried setting to 'test'

VAR_DUMP($_SESSION)

Array ( [loggedin] => 1 [tenant] => Coledon  [darkM] => )

解决

我不知道为什么这会有所不同,但我将变量从更改 $_SESSION['darkM'] $_SESSION['dark_mode']。再做var_dump一个新的结果是:array(1) { ['dark_mode']=> bool(false) }

所以我不再有问题,但仍然不知道为什么会这样?没有打字问题/隐藏字符。
另外,如果有人遇到同样的问题,请参阅navnathReflective的答案——重要的是要记住!

标签: phpsession-variablesvar-dump

解决方案


完全没问题,只是print_r处理false方式与您预期的不同。使用var_dump它显示变量的值和类型,而不是将它们转换为字符串print_r

<?php
    session_start();
    $_SESSION['darkMode'] = false;
    print_r($_SESSION);
    var_dump($_SESSION);
?>

输出

Array
(
    [darkMode] => 
)

array(1) {
  ["darkMode"]=>
  bool(false)
}

推荐阅读