iモードのようなクッキーの使えない古い端末でセッションを実現するシチュエーション。
smartyプラグインとしておけばaction_formでhiddenパラメータとして定義しなくともよい。
手順は次のとおり
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が生成されセッションが引き継がれる。