thinkphp3.2版本核心中的Cookies修復
修復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;