新規記事の投稿を行うことで、非表示にすることが可能です。
2016年01月12日
【Smarty】PHPでメール本文を別ファイルから読み込む
PHPでmb_send_mailを使ってメールを送る場合、
smartyを使うと別ファイルのテンプレートファイルにメール本文を用意しておいたものを
組み込むことが簡単にできます。
smartyのインスタンスを生成した状態で以下のように記述します。
テンプレートファイル
【sample.tpl】
------------------------
名前 : {$name} 様
メールアドレス:{$address}
------------------------
PHPファイル
<?php
// Smarty のインスタンスを生成
省略
// Smarty に変数を設定
$smarty->assign('name', "hoge");
$smarty->assign('address', "hoge@hoge.com");
// send_mailに必要な宛先等を記述
$to = 宛先メールアドレス;
$subject = 件名;
$header = ヘッダー情報;
// テンプレート(xxx.tpl)からメール本文を取得
$body = $smarty->fetch('sample.tpl');
// メール送信
mb_send_mail($to,$subject,$body,$header);
?>
これでメール本文を別ファイルに持っておいてsend_mailすることができます。
2015年12月28日
【Smarty】for文を実装するにはsectionを使う
Smartyでfor文のようにループを行いたい場合があります。
ループはforeachもありますが、ループ回数に制約をかけたい場合には、
for文があればと思ったものです。
Smartyでは、for文にかわってsectionを使用します。
それではSmartyのsectionを使用して、phpのfor文と同じように使用する方法をメモφ(..)
PHPの場合は以下のようになる
for ($i = 0; $i < 10; $i++) {
echo $i;
}
以下はSmartyの場合
{section name=hoge start=0 loop=10}
{$smarty.section.hoge.index}
{/section}
属性で必須となるのは、nameとloop。
”{$smarty.section.hoge.index}”ではループ回数(0始まり)を表示できます。
1始まりにしたい場合には、「index」でなく「iteration」を使用します。
2015年11月24日
【Smarty】HTMLのエスケープ処理
エスケープ処理は、クロスサイト・スクリプティングなどのセキュリティ上の問題に対し行わなければいけません
「<」や「&」などのHTMLやURLなど、ユーザーから入力された値をそのまま表示するように記述したい箇所には、
エスケープ処理(escape)をします。
Smartyでの実装がとても簡単です。
書き方は以下。
{$変数名|escape:"エスケープ種類"}
これだけでスクリプトタグが打ち込まれても、そのままの入力値で表示される。
エスケープ種類は以下。
html
htmlall
url
urlpathinfo
quotes
hex
hexentity
javascript
mail
デフォルトではエスケープ種類はhtmlになっているので、以下の@とAは同じ処理を示す。
@{$変数名|escape}
A{$変数名|escape:"html"}
オプションがhtmlの場合は「<」や「&」がエスケープされるが、
例えばquotesにすると変数名が「\'」で囲まれる。
mailにすると、「@」や「.」が「AT」「DOT」となる。
2015年10月30日
【Smarty】phpファイルの作成
プログラム側(phpファイル)では、テンプレートに渡す値を作成したり、
最終的にテンプレートを呼び出して画面に表示させたりします。
プログラムは以下の通りです。
<?php
//Smartyを読み込む
require_once('Smarty.class.php');
$smarty = new Smarty();
//テンプレートファイルなどを配置したディレクトリを絶対パスで指定
$smarty->template_dir = 'd:/path/templates/';
$smarty->compile_dir = 'd:/path/templates_c/';
$smarty->config_dir = 'd:/path/configs/';
$smarty->cache_dir = 'd:/path/cache/';
//テンプレートファイルに記述した変数に渡す値を設定
$smarty->assign('msg','Hello World!');
//テンプレートを呼び出して表示
$smarty->display('sample.tpl');
?>
テンプレートファイルには、以下のように変数を記述する。
sample.tpl
<html>
<head><title></title></head>
<body>
main<br>
{$msg}<br>
</body>
</html?>
ディスプレイ表示は、以下のようになる。
main
Hello World!