1. 程式人生 > >thinkphp3.2版本核心中的Cookies修復

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;