我通过在整个脚本中填充$ _SESSION - Array来分配会话变量。我的问题是,由于某些原因,会话中并非所有变量都可用。
这是我的代码的缩短版本,用于解释此问题:
session_start();
print_r($_SESSION);
$_SESSION['lang'] = 'de';
$_SESSION['location_id'] = 11;
$_SESSION['region_id'] = 1;
$_SESSION['userid'] = 'eccbc87e4b5ce2fe28308fd9f2a7baf3';
$_SESSION['hash'] = 'dce57f1e3bc6fba32afab93b0c38b662';
print_r($_SESSION);
第一次打印打印出类似这样的内容:
Array
(
)
Array
(
[lang] => de
[location_id] => 11
[region_id] => 1
[userid] => eccbc87e4b5ce2fe28308fd9f2a7baf3
[hash] => dce57f1e3bc6fba32afab93b0c38b662
)
第二个电话打印:
Array
(
[lang] => de
[location_id] => 11
[region_id] => 1
)
Array
(
[lang] => de
[location_id] => 11
[region_id] => 1
[userid] => eccbc87e4b5ce2fe28308fd9f2a7baf3
[hash] => dce57f1e3bc6fba32afab93b0c38b662
)
如您所见,重要的登录信息未存储在会话中。 有没有人知道我的会话有什么问题?谢谢你的回答!
答案 0 :(得分:1)
进一步扩展Pekka可能提到的内容,如果你有注册全局变量,那么你的会话变量和脚本中的其他变量可能存在命名冲突。如果可能的话,关闭寄存器全局变量或重命名变量,它们不会发生碰撞($ _SESSION'hash']和$ hash),看看会发生什么。
答案 1 :(得分:0)
将此代码粘贴在一个脚本中并保持不变,并多次运行。你应该在第2,第3,第4 ......时间得到相同的结果。
<?php
session_start();
print_r($_SESSION);
$_SESSION['lang'] = 'de';
$_SESSION['location_id'] = 11;
$_SESSION['region_id'] = 1;
$_SESSION['userid'] = 'eccbc87e4b5ce2fe28308fd9f2a7baf3';
$_SESSION['hash'] = 'dce57f1e3bc6fba32afab93b0c38b662';
print_r($_SESSION);
?>
如果它有效,那么你的脚本中显然有一些错误,你没有发布。在这种情况下,您应该提供更多代码,以便能够为您提供帮助。