$ _SESSION存储数组值以字符串形式返回到其他页面

时间:2014-04-24 14:44:19

标签: php arrays session

我在$_SESSION中设置了PHP代码:

session_start();
$_SESSION["token"]["token_name"] = "some value";

我试过了:

$_SESSION["token"] = array("token_name"=>"some value");

,结果相同

然后我访问我设置的另一个页面,我开始会话并尝试检索值:

session_start();
$val = $_SESSION["token"]["token_name"];
echo $val;

输出是: s

查看/tmp (my saved session directory)中保存的会话:

token|s:10:"some value";

我确定数组|s应为|a |s我确定意味着字符串)。我认为该值未正确存储在会话文件中,但我不确定原因。

安装的其他应用程序(第三方)正在使用会话变量中的数组,并且它正常工作。我不确定他们是否以不同于我的方式设置会话处理,但我只是使用服务器的默认值。

修改 这个代码在我试过的其他两台服务器上运行良好。

编辑2 我将名称从$ _SESSION [" token"]更改为$ _SESSION [" tokn"],所有内容都神奇地开始工作。我不知道为什么服务器不喜欢我使用"令牌"在$ _SESSION变量的数组出现的名称,但这样做的伎俩。我将它粉碎成机器中的鬼魂:)

3 个答案:

答案 0 :(得分:0)

首先这里的语法是错误的......

$val = $_SESSION["token"["token_name"];

应该是

$val = $_SESSION["token"]["token_name"];

答案 1 :(得分:0)

session_start();
$val = $_SESSION["token"]["token_name"]; //missing square bracket
echo $val;

答案 2 :(得分:-1)

//UPDATE SESSION WITH ARRAY
$_SESSION["token"]["token_name"][] = $val;

然后在另一页上:

$newval = $_SESSION["token"]["token_name"];
echo $newval;