がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

Smarty用のセキュリティラッパ

ざっくりと雑なルーチンですが。

    /*
     * HTMLタグを直接assignで扱いたい時用
     * 
     * @access protected
     * @param  no
     * @return no
     */ 
    public function assign_unsecure_raw($tpl_var, $value = null)
    {
        //
        parent::assign($tpl_var, $value);
    }

    /*
     * assignのセキュアラッパー
     * 
     */ 
    public function assign($tpl_var, $value = null)
    {
        //
        parent::assign($this->_esc($tpl_var), $this->_esc($value));
    }
    /*
     * 内部処理用関数
     */
    protected function _esc($str){
      if(is_array($str)){
        $ret = array();
        foreach($str as $key => $val) {
          $ret[$key] = $this->_esc($val);
        }
        return $ret;
      }else{
        if (is_null($str)) {
          return null;
        }
        // else
        return htmlspecialchars($str,ENT_QUOTES);
      }
    }