我的是OneThink,模板中引用session数组,代码如下:
123
<BR>0:{$Think.session.user_auth.0}
<BR>2:{$Think.session.user_auth.2}
<BR>username:{$Think.session.user_auth.username}
<BR>user_auth_sign:{$Think.session.user_auth_sign}输出结果: 123
0:
2:
username:
user_auth_sign:2a1ebd6b3081ea57c79a507c93379184ba4b1912中间几行是空的,什么session值都没有啊!是我的模板中代码写法不对吗?请教!我的实际session值:
dump(session());
//session:
array(2) {
["user_auth"] => array(4) {
["uid"] => string(2) "40"
["nickname"] => string(0) ""
["username"] => string(6) "阿新"
["last_login_time"] => string(10) "1445525240"
}
["user_auth_sign"] => string(40) "2a1ebd6b3081ea57c79a507c93379184ba4b1912"
}//+++++++++++++++++++++++++++++++++++++++++++++找到原因了,正确写法是:
{$Think.session.user_auth.username}有一处thinkphp的代码要修改一下:\ThinkPHP\Library\Think\Template.class.php
找到:
case 'SESSION':
if(isset($vars[3])) {
$parseStr = '$_SESSION[\''.$vars[2].'\'][\''.$vars[3].'\']';
}
...
break;改成:case 'SESSION':
if(C('SESSION_PREFIX')){
$parseStr = '$_SESSION[\''.C('SESSION_PREFIX').'\']';
}else{
$parseStr = '$_SESSION';
}
if(isset($vars[3])) {
$parseStr.= '[\''.$vars[2].'\'][\''.$vars[3].'\']';
}else{
$parseStr.= '[\''.$vars[2].'\']';
}
break; 最佳答案