« 配送無料キャンペーンが全品に拡大 | メイン | プレイスフォルダの IN(?) »

ethna

Ethna 2.3.x 以前でsmartyプラグイン

iモードのようなクッキーの使えない古い端末でセッションを実現するシチュエーション。
smartyプラグインとしておけばaction_formでhiddenパラメータとして定義しなくともよい。
手順は次のとおり

APPID/app/plugin/Smarty/function.hsession.php
<⁄php
function smarty_function_hsession($params, &$smarty){
    $c =& Ethna_Controller::getInstance();
    $name = $c->getAppId() . 'SESSID';

    $sessionid = session_id();
    if(isset($params['type']) && $params['type'] == 'get'){
        return "$name=$sessionid";
    }else{
        return "<input type=\"hidden\" name=\"".$name."\" value=\"$sessionid\" />\n";
    }
}
⁄>
APPID/app/Front_Controller.php
var $directory = array(
        :
    'plugins'        => array('app/plugin/Smarty'),
        :
var $smarty_function_plugin = array(
    'smarty_function_hsession',    ///    追加
),
アクションにセッション処理を記述し、POSTならテンプレートに
{hsession}
と記述するだけで
<input type="hidden" name="FrontSESSID" value="a0f24f75e...e48864d3e" />
や、GETなら
{hsession type="get"}
と記述するだけで
APPIDSESSID=a0f24f75e...e48864d3e
という具合にHTMLが生成されセッションが引き継がれる。

トラックバック

このエントリーのトラックバックURL:
https://www.remix.asia/cgi/mt/mt-tb.cgi/6701

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)