我在$_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变量的数组出现的名称,但这样做的伎俩。我将它粉碎成机器中的鬼魂:)
答案 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;