修复thinkphp 3.2模版变量中和在标签中使用Think模版变量cookie\session解析结果为空的bug:
修改ThinkPHP\Library\Think\Template.class.php 605行
//以下代码中有 当设置了session cookies前缀的情况下 模版变量应用会失效 需修改为下面代码
// case 'COOKIE':
// if(isset($vars[3])) {
// $parseStr = '$_COOKIE[\''.$vars[2].'\'][\''.$vars[3].'\']';
// }else{
// $parseStr = 'cookie(\''.$vars[2].'\')';
// }
// break;
// case 'SESSION':
// if(isset($vars[3])) {
// $parseStr = '$_SESSION[\''.$vars[2].'\'][\''.$vars[3].'\']';
// }else{
// $parseStr = 'session(\''.$vars[2].'\')';
// }
// break;
case 'COOKIE':
if(isset($vars[3])) {
$prefix=C('COOKIE_PREFIX');
$prefixStr = empty($prefix) ? '' : "['".$prefix."']";
$parseStr = '$_COOKIE'.$prefixStr.'[\''.$vars[2].'\'][\''.$vars[3].'\']';
}else{
$parseStr = 'cookie(\''.$vars[2].'\')';
}
break;
case 'SESSION':
if(isset($vars[3])) {
$prefix = C('SESSION_PREFIX');
$prefixStr = empty($prefix) ? '' : "['".$prefix."']";
$parseStr = '$_SESSION'.$prefixStr.'[\''.$vars[2].'\'][\''.$vars[3].'\']';
}else{
$parseStr = 'session(\''.$vars[2].'\')';
}
break;
修改ThinkPHP\Library\Think\Template\TagLib.class.php parseThinkVar函数 206行为如下代码:
case 'COOKIE':
if(isset($vars[3])) {
$prefix=C('COOKIE_PREFIX');
$prefixStr = empty($prefix) ? '' : "['".$prefix."']";
$parseStr = '$_COOKIE'.$prefixStr.'[\''.$vars[2].'\'][\''.$vars[3].'\']';
}else{
$parseStr = 'cookie(\''.$vars[2].'\')';
}
break;
case 'SESSION':
if(isset($vars[3])) {
$prefix = C('SESSION_PREFIX');
$prefixStr = empty($prefix) ? '' : "['".$prefix."']";
$parseStr = '$_SESSION'.$prefixStr.'[\''.$vars[2].'\'][\''.$vars[3].'\']';
}else{
$parseStr = 'session(\''.$vars[2].'\')';
}
break;