【发布时间】:2021-11-29 04:56:01
【问题描述】:
[已解决]
在我的 login.php 中,设置了几个 $_SESSION 变量。
我最近添加了另一个 = $_SESSION['darkM'] = false;。
执行 var_dump($_SESSION);(结果如下),我的其他变量的值设置得很好,但是这个不会!
我尝试将其设置为 字符串 ('test'),但在 var_dump 中仍然返回空。只有这个变量不会设置。
我检查了我的error_log,什么都没有!澄清一下,session_start(); 已经设置在我声明变量的上方。知道为什么会发生这种情况吗?
----- 编辑 -----
Login.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,新结果是:
数组(1){
['dark_mode']=>
布尔(假)
}
所以我不再有问题,但仍然不知道为什么会发生这种情况?没有打字问题/隐藏字符。
另外,如果有人遇到同样的问题,请查看 navnath 和 Reflective 的答案 - 重要的是要记住!
【问题讨论】:
-
你应该分享你的代码而不仅仅是描述
-
所以“
session_start();已经设置在我声明变量的位置上方”,你是说在设置这个$_SESSION['darkM'] = false;.之前你已经调用了session_start()对吗?如果不是,那将导致您所描述的情况。 -
@Salvino -- 没错,是的。我也认为这是我的错误,但它的放置正确:(
-
@Coledon_Projects 使用
var_dump()而不是print_r()进行调试(您得到的输出来自print_r())。还有edit你的问题包括你遇到的问题的minimal reproducible example。 -
您是否尝试重新输入整行,以防有一些不可见的字符阻止代码执行。你也试过把它放在第一位吗?
标签: php session-variables var-dump