スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | | - | - | pookmark |
Entry: main  << >>
Smartyのカスタム設定
◆スクリプトの漏洩を防ぎ、使い勝手を向上させる設定

Smartyテンプレートファイルに直接アクセスされるのを防ぐために、Smartyクラスの継承を利用して、以下のようにカスタムのclassファイルを作成し、templatesやtemplates_c、cache、configsディレクトリの位置も変更する。

デフォルトで全ての変数(Smartyテンプレート内の)にescape処理をかける設定もする。

Smartyのデリミタを{{}}に変更して、テンプレート内でJavaScriptのfunction構文等が入った時にも大丈夫なようにする。

ファイルやディレクトリの構成を以下に変更
├ htdocs
│ └ php_10days // PHPスクリプトを置く場所
├ libs
│ ├ MySmarty.class.php
│ └ Smarty.class.php

├ templates
├ templates_c // Webサーバの書き込み権限を与えておく
├ configs
└ cache // Webサーバの書き込み権限を与えておく

/libs/MySmarty.class.php
<?php
// ルートディレクトリを変数ROOT_DIRにセットする
define("ROOT_DIR", $_SERVER['DOCUMENT_ROOT']."/..");

// Smartyクラスを呼び出す
require_once("Smarty.class.php");

// Smartyクラスを継承したMySmartyクラスを作成する
class MySmarty extends Smarty {

// コンストラクタ
function MySmarty() {

// Smartyで使用する四つのディレクトリのパスを上書き
$this->template_dir = ROOT_DIR."/templates";
$this->compile_dir = ROOT_DIR."/templates_c";
$this->cache_dir = ROOT_DIR."/cache";
$this->config_dir = ROOT_DIR."/configs";

// 左右デリミタを上書き
$this->left_delimiter = "{{";
$this->right_delimiter = "}}";

// デフォルトで全ての変数にescapeをかける設定
$this->default_modifiers = array('escape');

// Smartyクラスのコンストラクタの呼び出し
$this->Smarty();
}
}
?>

/htdocs/php_10days/smarty1.php(サンプルスクリプト)
<?php

// Smarty.classの呼び出し
require_once($_SERVER["DOCUMENT_ROOT"]."/../libs/MySmarty.class.php");

// 追加するHTMLフォーム
$scalar = "Hello Smarty!";
$sex["m"] = "men";
$sex["f"] = "women";

// 新しく作成したMySmartyインスタンスの生成
$smarty = new MySmarty();

// テンプレート変数の割り当て
$smarty->assign("scalar", $scalar);
$smarty->assign("sex", $sex);

// テンプレートを表示
$smarty->display("smarty1.tpl");

?>

/templates/smarty1.tpl
<html>
<head>
<title>Smarty実行サンプル</title>
</head>
<body>

{{$scalar}}<br />
{{$sex.m}}<br />
{{$sex.f}}<br />

</body>
</html>

| php | 13:47 | comments(0) | trackbacks(0) | pookmark |
スポンサーサイト
| スポンサードリンク | 13:47 | - | - | pookmark |
Comment








Trackback

Calendar

      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< April 2017 >>

Recommend

Recommend

Recommend

Profile

Search

Entry

Comment

Archives

Category

Link

Feed

Others

無料ブログ作成サービス JUGEM

Mobile

qrcode

Sponsored Links