PHP不会将所有变量存储在会话中

时间:2010-04-08 19:16:49

标签: php session

我通过在整个脚本中填充$ _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
)

如您所见,重要的登录信息未存储在会话中。 有没有人知道我的会话有什么问题?谢谢你的回答!

2 个答案:

答案 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);
?>

如果它有效,那么你的脚本中显然有一些错误,你没有发布。在这种情况下,您应该提供更多代码,以便能够为您提供帮助。