設定ファイルの各項目について説明します。
設定ファイルの文字コードはUTF-8です。
送信されるメールやテンプレートファイルの文字コードは別途設定されている場合がありますが、設定ファイルはUTF-8で保存してください。
拡張子が .ini の設定ファイルについて説明します。
ini 設定ファイルでは、セクションという区切りによりグループとして分けられています。
セクションは、"[]"(角かっこ)で区切られた範囲を指します。
例えば、[mail]セクションは [mail] 行から、次に [](角かっこ)で囲われた行までの範囲のことです。
行頭に ; (半角セミコロン)があるとその行はコメント(注釈)という扱いになり、設定値は無効になります。
行頭にセミコロンを置いてコメント化することを「コメントアウト」と記します。
拡張子が .txt のファイルは通常のテキストファイルです。
拡張子が .php のファイルは、PHPというプログラミング言語が記述されたソースファイルです。
mail.ini の [mail] セクションでは、管理者宛メールやメールの文字エンコーディングに関する設定を行います。
;; ★★★ 必ず変更してください!!!
;; 送信元メールアドレス
from = your_address@example.com
インストール時にこの設定値を必ず変更してください。
from は管理者宛メールの送信元メールアドレスを指定します。
自動返信メールを送る場合で、[reply_mail]セクションの from を省略した場合もここで設定したメールアドレスが使われます。
SMTP送信機能を使用した場合は、メールサーバーによってこの値が書き換えられる場合があります。
;; ★★★ 必ず変更してください!!!
;; 送信元表示名
;; ここで指定した値が差出人の名前として表示されます。
from_name = "山田 太郎"
インストール時にこの設定値を必ず変更してください。
from_name は管理者宛メールの送信元の表示名(差出人名)を指定します。
自動返信メールを送る場合で、reply_from_name を省略した場合もここで設定した表示名が使われます。
SMTP送信機能を使用した場合は、メールサーバーによってこの値が書き換えられる場合があります。
;; ★★★ 必ず変更してください!!!
;; 送信先メールアドレス
;; このメールフォームを受け取りたいメールアドレスを指定します
;; カンマ区切りで複数の宛先を指定できます。 例: info@microengine.jp, your_address@microengine.jp
to = your_address@microengine.jp
インストール時にこの設定値を必ず変更してください。
to は管理者宛メールの送信先を指定します。
カンマ区切りで複数の宛先を指定できます。
複数の宛先にメールを送信したい場合は、次のようにカンマ区切りでメールアドレスを指定します。
to = info@microengine.jp, your_address@microengine.jp
;; CC メールアドレス
;cc = your_address@example.com
管理者宛メールのCCとして指定したいメールアドレスを設定できます。
[mail] セクションの to と同様に複数のメールアドレスを指定できます。
;; BCC メールアドレス
;bcc = your_address@example.com
管理者宛メールのBCCとして指定したいメールアドレスを設定できます。
[mail] セクションの と同様に複数のメールアドレスを指定できます。
;; 返信先アドレス(Reply-toヘッダー)
;reply_to = your_address@example.com
この項目に設定したメールアドレスが返信先アドレス(Reply-toヘッダー)として使用されます。
返信先アドレスを指定したい場合は、reply_to_item と reply_to のどちらかのみを設定してください。
;; 返信先アドレス(Reply-toヘッダー)に採用するフォームアイテム名
reply_to_item = email
この項目を設定すると、フォームに入力されたメールアドレスが返信先アドレス(Reply-toヘッダー)として使用されます。
これにより、届いたメールに返信することでフォーム投稿者のメールアドレスに返信することができます。
from_item は item.ini に設定されている email タイプのアイテム名を指定できます。
このアイテムは下記の例のように、「required = 1」が指定された必須項目に設定されている必要があります。
[email]
type = email
label = "メールアドレス"
required = 1
;; 件名
subject = "{name}様からお問い合わせ"
管理者宛メールの件名を指定します。
{name} のように波括弧で item.ini に定義されたアイテム名を指定すると、その部分がフォームの入力値に置き換えられます。
件名を置換できるタイプは "text, select, radio, checkbox, hidden, email" の6種類です。
通し番号機能を利用している場合は、{_serial} を指定すると発行された番号が件名に表示されます。
;; メール文字セット
;; 例: UTF-8, ISO-2022-JP
charset = UTF-8
管理者宛・自動返信メールの文字コードを指定します。
初期設定値は UTF-8 です。
この設定値と encoding 設定値の組み合わせにより文字化けのしやすさに影響を与えます。
;; メールエンコード
;; 例: 7bit, base64, Quoteod-Printable, QP
encoding = base64
管理者宛・自動返信メールのメールエンコードを指定します。
初期設定値は base64 です。
この設定値と charset 設定値の組み合わせにより文字化けのしやすさに影響を与えます。
;; 1行あたりの最大バイト数
;; 最大バイト数を超えた行は自動的に改行します。この機能を無効にしたい場合はこの設定をコメントアウトします。
line_length = 980
メール本文の1行あたりの最大バイト数を指定します。この機能はMTAの1行あたりのバイト数制限を回避するために設定します。
;; Return-path
;; 指定が必要なメールサーバーを利用されている場合は設定してください。
;return_path = your_address@example.com
Return-path を指定します。多くのメールサーバーでは自動的に設定されますが、明示的に指定が必要な場合はこの項目を設定してください。
mail.ini の [reply_mail] セクションでは、自動返信メールに関する設定を行います。
from, from_name cc, bcc, reply_to, subject は管理者宛の[mail]セクションと同じ設定項目名になりますので、セクションを間違わないように注意してください。
[reply_mail]
;; 自動返信メール送信元メールアドレス
;; 管理者宛と異なる送信元を指定したい場合に設定する
;from = your_address@example.com
自動返信メールの送信元メールアドレスを指定できます。
この設定をコメントアウトした場合は、[mail] セクションの from 設定値が使用されます。
;; 自動返信メール送信元表示名
;; 管理者宛と異なる送信元表示名を指定したい場合に設定する
;from_name = "山田 太郎"
自動返信メールの送信元表示名を指定できます。
この設定をコメントアウトした場合は、[mail] セクションの from_name 設定値が使用されます。
;; 自動返信メールのフォームアイテム名
;; フォームのアイテム名を指定すると、そのアイテムの入力値を宛先としてメールを送信します
;; この項目をコメントアウトすると自動返信メールは送信されません。
to_item = email
この項目を設定すると、フォームに入力されたメールアドレス宛に自動返信メールを送信することができます。
サンプルフォームでは初期値が設定されており、email アイテム宛にメールが送信されます。
自動返信メール機能を停止したい場合は、先頭にセミコロンを入れてコメントアウトします。
ここで指定した設定項目にフォーム上で値が入力されなかった場合は自動返信メールは送信されません。
必ず自動返信メールを送りたい場合は、item.ini で該当アイテムが必須項目になるように設定してください。
;; 自動返信メールの CC メールアドレス
;cc = your_address@example.com
自動返信メールのCCとして指定したいメールアドレスを設定できます。
[mail] セクションの to と同様に複数のメールアドレスを指定できます。
;; 自動返信メールの BCC メールアドレス
;bcc = your_address@example.com
自動返信メールのBCCとして指定したいメールアドレスを設定できます。
[mail] セクションの to と同様に複数のメールアドレスを指定できます。
;; 返信先アドレス(Reply-toヘッダー)
;reply_to = your_address@example.com
この項目に設定したメールアドレスが返信先アドレス(Reply-toヘッダー)として使用されます。
;; 自動返信メール件名
;; コメントアウトすると、"subject"項目の値が採用されます。
subject = "{name}様、お問い合わせありがとうございます。"
自動返信メールの件名を指定します。
{name} のように波括弧で item.ini に定義されたアイテム名を指定すると、その部分がフォームの入力値に置き換えられます。
件名を置換できるタイプは "text, select, radio, checkbox, hidden, email" の6種類です。
通し番号機能を利用している場合は、{_serial} を指定すると発行された番号が件名に表示されます。
mail.ini の [sorting] セクションでは、送信先振り分け機能に関する設定を行います。
設定例:
[sorting]
;; 振り分けの元になるアイテム名を指定する
item_name = purpose
value_1 = "お見積依頼"
email_1 = sales@example.com, info@example.com
value_2 = "採用情報について"
email_2 = recruit@example.com
value_3 = "その他お問い合わせ"
email_3 = info@example.com
;; 振り分けの元になるアイテム名を指定する
item_name = purpose
送信先を振り分ける判定基準となるアイテム名を指定します。
この設定値に purpose を指定した場合には、item.ini の purpose アイテムが基準となります。
この項目に指定できるアイテムのタイプは、radio か select のいずれかです。
送信先振り分け機能を使用しない場合には、この項目をコメントアウトします。
value_1 = "お見積依頼"
送信先振り分け機能の判定値となる値を指定します。
設定項目名(左辺)の X の部分には任意の数字を指定します。
設定項目値(右辺)には item_name 項目で指定されたラジオボタンやセレクトボックスの value属性の値を指定します。
email_1 = sales@example.com, info@example.com
送信先振り分け機能で value_X の判定値と一致した場合の宛先となるメールアドレスを指定します。
設定項目名(左辺)の X の部分には value_X と同じ数字を指定します。
[mail] セクションの to と同様に複数のメールアドレスを指定できます。
mail.ini の [library] セクションでは、メール送信ライブラリの設定を行います。
メールログやメールエラーログを書き出す設定にすると、ログディレクトリ(me_mailform/data/log/)にログファイルが書き出されます。
ログを書き出すためには、Webサーバーの実行ユーザーがログディレクトリのファイル書き込み権限を持っている必要があります。
;;;===========================
;;; library セクション
;;; メール送信ライブラリ設定
[library]
;; メール送信エラー表示
;; メールライブラリ(Qdmail)のエラーメッセージの表示設定
error_display = 0
;; メールログ
;; 0 ログを出力しない(デフォルト)
;; 1 シンプルタイプ(送信した または失敗した メールアドレスのみ)
;; 2 ヘッダー情報も含むログ
;; 3 メール本文も含めたログ
log_level = 0
;; メールエラーログ
;; 0 エラーログを出力しない(デフォルト)
;; 1 シンプルタイプ(エラーメッセージのみ)
;; 2 ヘッダー情報も含むエラーログ
;; 3 メール本文も含めたエラーログ
error_log_level = 0
;; 改行コード
;; メールの改行コードを指定します。
;; 通常は自動判定されますが、メールヘッダーが本文に表示されるなどの現象が発生する場合は、"lf" もしくは "crlf" を指定します。
;line_feed = lf
mail.ini の [smtp] セクションでは、SMTP送信機能の設定を行います。
この機能を使用しない場合は、メールフォームを設置したWebサーバー内のsendmailプログラムが利用されます。
その場合、送信元にしていしたメールアドレスの正規のメールサーバーとは異なるためスパムと判定される可能性が高くなります。
そういった問題を回避する目的や、sendmailプログラムを持たないWebサーバーでメールフォームを運用したい場合にSMTP送信機能を活用します。
このセクション名([smtp])はコメントアウトされているため、SMTP機能利用時は行頭のセミコロンを削除して、セクション名を有効にしてください。
各項目は利用するSMTPサーバーの設定値を指定してください。
;;;===========================
;;; smtp セクション ※認証なしの指定例
;;; SMTPサーバーを指定してメールを送信する場合に使用します。
;[smtp]
;; SMTP:認証なし
;; プロトコル
;protocol = SMTP
;; ホスト名
;host =
;; ポート番号
;port =
;;;===========================
;;; smtp セクション ※SMTP認証の設定例
;;; SMTPサーバーを指定してメールを送信する場合に使用します。
;[smtp]
;; SMTP_AUTH:SMTP認証
;; プロトコル
;protocol = SMTP_AUTH
;; ホスト名
;host =
;; ポート番号
;port =
;; ユーザー名
;user =
;; パスワード
;; パスワードは記号が含まれることがあるためダブルクォーテーションで囲います。
;password = "password"
;;;===========================
;;; smtp セクション ※POP Before SMTPの設定例
;;; SMTPサーバーを指定してメールを送信する場合に使用します。
;;[smtp]
;; POP_BEFORE:POP Before SMTP
;; プロトコル
;protocol = POP_BEFORE
;; ホスト名
;host =
;; ポート番号
;port =
;; POPサーバーホスト名
;pop_host =
;; ユーザー名
;user =
;; パスワード
;; パスワードは記号が含まれることがあるためダブルクォーテーションで囲います。
;password = "password"
テンプレートやステップ設定、通し番号やCSVなどの様々な項目を設定します。
;; MicroEngine メールフォーム 基本設定ファイル
;;;===========================
;;; global セクション
[global]
;; テンプレートファイルの文字コード
;; 例: "UTF-8", "SJIS-win", "EUC-JP" など
char_code = UTF-8
;; XHTMLオプション
;; "1" を指定するとこのプログラムが生成する空要素の閉じタグの前に "/"を追加します
;xhtml = 1
;; フォーム名
;; このシステムで使用するform要素のname属性値を指定します
form_name = me_mailform
;; キャッシュ制御方法
;; 確認画面使用時のキャッシュ設定を行います。
;; nocache, private, private_no_expire, public のいずれかを指定できる。
;; この設定値は、php.ini の session.cache_limiter の値を上書きます。
;; 確認画面を使用しない場合はこの設定は無効です。その場合、PHPの初期設定状態では nocache として
;; 扱われます。
session.cache_limiter = private_no_expire
;;;===========================
;;; step セクション
[step]
;; 入力画面で使用するテンプレートファイル
entry = entry.html
;; 確認画面で使用するテンプレートファイル
confirm = confirm.html
;; 送信画面(送信完了後)で使用するテンプレートファイル
;; メール送信後にリダイレクトさせる場合は使用しない
send = thanks.html
;; エラー用画面のテンプレートファイルを指定
error = error.html
;;;===========================
;;; flow セクション
[flow]
;; 確認画面を使用する
;; この項目に 0 を指定するか、この項目をコメントアウトすると、確認画面を使用せずに、
;; メールを送信します。
;; この項目を 0 にすると、global セクションの session.cache_limiter の値は無効になります。
use_confirm = 1
;; メール送信後にリダイレクトする
;; メール送信後にリダイレクトさせるページを指定する。
;; 例:
;; redirect = thanks.html
;; redirect = http://microengine.jp/
;;;===========================
;;; セキュリティ セクション
[security]
;; トークンチェック
;; フォーム内のトークンの値が正しいことを確認します。
;; 入力画面(確認画面)から送信画面にPOSTされたことを確認するために、トークンの値が正しいことを
;; 確認します。入力画面を経由せずに直接送信画面にアクセスするロボットを防ぐことができます。
;; ブラウザやプロキシなどの環境により、誤検出が発生する場合はトークンチェックを無効にしてください。
;; その場合は、画像認証を使ってロボット対策を行うことを検討してください。
token = 1
;; クライアントIP
;; 送信者情報のクライアントIP(_ip)を取得するための環境変数名を指定します。
;; 信頼するプロキシからリクエストが転送される場合は HTTP_X_FORWARDED_FOR を指定することができます。
client_ip = REMOTE_ADDR
;; IP別の連続送信制限
;; send_period = 600 で max_sends = 10 の場合は、10時間以内に10回まで同一IPからの送信はできるが、それ以上はエラー画面を表示する。
;; limitation.sqlite ファイルが存在しないか、書き込み権限がない場合はこの送信制限機能は無効になります。
;; IP別の連続送信制限:最大送信回数
;; この項目に 0 を指定するか、この項目をコメントアウトすると、送信制限は行われません。
max_sends = 10
;; IP別の連続送信制限:連続送信制限期間(分)
send_period = 600
;; secure属性
;; この項目に 1 を指定すると、https 通信時のみクッキーを送出します。
;; http で通信する際には、0 に設定する必要があります。ただし、ブラウザの種類によっては、localhost で通信する場合は secure属性が無効になるため、
;; 1 のままでも、正常に動作する場合があります。
;; この項目をコメントアウトして設定しない場合は、サーバーのPHPの設定に従います。
cookie_secure = 1
;;;===========================
;;; 通し番号 セクション
[serial]
;; 通し番号発行機能(無効:0 、有効:1)
serial = 0
;; CSVヘッダー行の項目名
label = Serial Number
;; 通し番号フォーマット
;serial_format = "{_date}-%08d"
;; 通し番号日付フォーマット
;serial_date_format = Ymd
;; オフセット
;serial_offset = 1000
;; 最大値
;serial_max = 1000
;;;===========================
;;; CSV セクション
[csv]
;; CSVファイル名
;; CSV保存機能を利用する場合は、保存するファイル名を指定します。
;csv_file = contact.csv
;; CSV添付ファイル名
;; CSV添付機能を利用する場合は、メールに添付するファイル名を指定します。
;; 別途通し番号を設定して、csv_attach = contact-{_serial}.csv のような値を指定するとファイル名に通し番号を利用することができます。
;; この機能はサーバー内にファイルを保存するCSV保存機能とは異なり、CSVファイルにはメールフォーム送信1回分の内容のみが含まれます。
;csv_attach = contact.csv
;; CSVファイルの文字コード
;; 例: "SJIS-win", "UTF-8" など
char_code = SJIS-win
;; BOM(バイトオーダーマーク)
;; "1" を指定するとUTF-8の場合にBOMをファイルの先頭に出力します。
;; BOMが出力されるのはCSVファイルの初回書き込み時のみです。
;; char_codeを UTF-8 に設定して、BOMを出力するとWindows版のExcelでもダブルクリックでファイル
;; を開けるようになる場合があります。
bom = 0
;; 保存アイテムリスト
;; 指定をコメントアウトすると、全アイテムと送信者情報が保存されます。
;item_list = _serial, _date, name, email, comment, _ip, _host, _ua, _to, _cc, _bcc
;;;===========================
;;; Date セクション
[Date]
; Defines the default timezone used by the date functions
date.timezone = Asia/Tokyo
;; メール送信日時の書式
;; メール本文に、{_date} という文字列があると、メール送信時点の日時と置換します。
;; その日時の書式を指定します。
;; 例:"Y/m/d H:i:s" -> 2011/07/16 15:00:00
;; 例:"Y年m月d日 H時i分s秒" -> 2011年07月16日 15時00分00秒
date_format = "Y/m/d H:i:s"
;;;===========================
;;; select セクション
[select]
delimiter = ", "
;;;===========================
;;; checkbox セクション
[checkbox]
delimiter = ", "
;;;===========================
;;; CAPTCHA セクション
;;; CAPTCHA(画像認証)機能についての設定
[captcha]
;; 画像に表示する文字の種類を指定する。
;; 指定可能文字列: 0123456789abcdefghijklmnopqrstuvwxyz
;allowed_symbols = 23456789abcdegkmnpqsuvxyz
;allowed_symbols = 23456789abcdegikpqsvxyz
allowed_symbols = 0123456789
;; 画像に表示する文字数を指定
length = 5
;; 画像の幅を指定
width = 150;
;; 画像の高さを指定
height = 40;
;;;===========================
;;; アップロードファイル セクション
[upload_file]
;; アップロードしたファイルをメールに添付する
attach_mail = 1
;; アップロードしたファイルをサーバーに保存する
save_file = 0
;; 許可拡張子
;; 許可したい拡張子を小文字で指定する。
extensions = jpeg, jpg, gif, png, zip
;; 最大ファイルサイズ
;; 数値はMBとして扱う。単位は指定しません。
;; PHPが利用できるメモリ・POSTサイズはこの設定値以上を確保してください。
;; 例: 10MBを指定したい場合は、「10」を指定します。
max_filesize = 10
;; アップロードファイルパス
;; アップロードしたファイルをサーバーに保存する場合のファイルパスを指定します。
;; 次の内容を指定できます。
;; 通し番号 {_serial}
;; 乱数値 {random}
;; オリジナルファイル名 {filename}
;; 拡張子 {ext}
;; アイテム名 {item_name}
upload_file_path = {random}/{filename}
;;;===========================
;;; バリデーション セクション
[validation]
;; 親要素のエラークラス指定
;; バリデーションエラーが発生したアイテムのエラーメッセージボックスの何個親の要素にエラー用クラスを適用するかを指定します。
error_parents = 2
;; エラークラス名
;; error_parents の指定に該当する要素に追加するクラス名を指定します。
error_class = alert alert-warning
;; textarea タイプ以外で改行文字が含まれているとエラーと判定します。
not_has_line_break = 1
※ [validation] セクションはバージョン 1.1.2 で追加されました。
※ CSV添付機能(csv_attach設定)はバージョン 1.1.5 で追加されました。
※ CSV添付機能(csv_attach設定)でファイル名に通し番号を指定できる機能はバージョン 1.1.6 で追加されました。
アクセス元のIPアドレス別に、指定した時間内に指定した回数以上の送信を制限する機能があります。(v1.0.5で追加)
この機能は、メールフォームに連続送信をおこなうロボット対策として追加されました。その背景について説明します。
インターネット上に公開されたWebサイトは世界中から攻撃の対象になります。Webサーバーのログを見ると、メールフォームに限らず有名なソフトウェアの脆弱性を探すためのアクセスの記録が頻繁に確認できます。 当メールフォームも例外ではなく、脆弱性をつくためにロボットから多数のメールを送信される場合があります。 過去に攻撃が成功した事例はありませんが、その際に多数(例:一晩で1000通ほど)のメールがメールボックスに溜まってしまうという問題が発生する場合があります。 対策の1つとしては、画像認証(CAPTCHA)を設置して画像を解析できないタイプのロボットを拒否するという方法があります。これも1つの対策ですが、フォーム投稿者が画像認証のコードを入力する手間を増やしてしまうことになり、アクセシビリティとしてもデメリットがあります。 画像認証を設置せずに、ロボットによる連続投稿によるメールボックスの肥大化を抑止するための対策としてこの機能が用意されました。 アクセス元のIP別に一定時間内に送信できる回数が限られるため、攻撃を検出してから htaccess ファイルやファイアーウォールなどを活用して攻撃をブロックするといった対応がとれます。
[security] セクションの max_sends, send_period, client_ip 項目で設定をおこないます。 初期設定値では、同一IPから10時間以内に10回を超える送信はできません。状況に合わせて設定を変更してください。メールフォームの設置テスト時に制限値に引っかかる場合は、一時的に max_sends の値を増やすなどの対応をしてください。 Webサーバーの前段にリバースプロキシを利用している場合には、初期設定値ではアクセス元のクライアントIPを取得できない場合がありますので client_ip 項目を設定してください。
フォームの各項目(input要素やtextarea要素)を設定します。
このメールフォームでは、その各項目のことをアイテムと呼びます。
;; MicroEngine メールフォーム アイテム設定ファイル
;;
;; この設定ファイルでは、フォームのアイテム(項目)を定義します。
;; このメールフォームでは、formのinput要素やtextarea要素一つ一つをアイテムと呼びます。
;;
;; アイテムのname属性名をセクション名に指定します。
;; 例:[form_item_name]
;;
;; type にはinput要素のタイプ名や要素名と対応させた名前を指定します。
;; 指定できる値: email, text, textarea, select, radio, checkbox, password, hidden, captcha, price
;; email を指定すると、メールアドレスの簡易書式チェックが実行されます。
;;
;; label に項目名を指定すると、エラーメッセージの"{label}"がその項目名に置換されます。
;; required に 1 を指定すると、必須項目になります。
;; maxlength に 数字を指定すると、最大文字数をチェックします。
;; その他詳しい設定内容は公式サイトのマニュアルをご覧ください。
;;
;; お問い合わせ内容
[comment]
type = textarea
label = "お問い合わせ内容"
required = 1
maxlength = 10000
;; お名前
[name]
type = text
label = "お名前"
required = 1
maxlength = 100
;; メールアドレス
[email]
type = email
label = "メールアドレス"
required = 1
convert_kana = a
;; 郵便番号
[zipcode]
type = text
label = "郵便番号"
convert_kana = a
maxlength = 8
;; 住所
[addr]
type = text
label = "住所"
;; 注意事項
; 行頭に ; (半角セミコロン)があるとその行はコメント(注釈)という扱いになり、設定値は「無効」になります。
;; ご用件
;[purpose]
;type = radio
;label = "ご用件"
;required = 1
;; ご職業
;[work]
;type = select
;label = "ご職業"
;; ご利用用途
;[use]
;type = checkbox
;label = "ご利用用途"
;multiple = 1
;; 画像認証
;[captcha]
;type = captcha
;label = "画像認証"
;; 添付ファイル
;[file]
;type = file
;label = "添付ファイル"
"[]"(角かっこ)内に指定した文字列がアイテム名になります。 上の例の場合、"comment" がアイテム名とります。 このアイテム名が、入力画面・確認画面・送信画面・メール本文で利用される名前となります。
入力画面では、input要素やtextarea要素のNAME属性として指定します。
エラーメッセージを表示させたいHTML要素に、アイテム名+"_error" のID属性を指定します。 この場合は、"comment_error"というID属性を指定した要素内にエラーメッセージが表示されます。
<tr>
<th>お問い合わせ内容 <span class="label label-important">必須</span></th>
<td><textarea name="comment" class="input-xxlarge" rows="10"></textarea>
<div id="comment_error" class="alert alert-error">エラーメッセージ</div>
</td>
</tr>
確認画面では、入力内容を表示させたい要素のID属性に"comment"を指定します。
<tr>
<th>お問い合わせ内容</th>
<td id="comment"></td>
</tr>
メール本文では、body.txt(管理者用)やreply_body.txt(自動返信用)の"{comment}"という文字列を入力内容に置換します。
■お問い合わせ内容
{comment}
入力フォームのinput要素に対応したtype属性を指定します。 typeには、次の名前を指定できます。
<tr>
<th>画像認証 <span class="label label-important">必須</span></th>
<td>
<img src="index.php?captcha" width="160" height="80" title="画像認証"><br>
画像に表示されている文字を入力してください。<br>
<input id="captcha" type="text" name="captcha">
<div id="captcha_error" class="alert alert-error">エラーメッセージ</div>
</td>
</tr>
アイテムの表示名を指定します。
エラーメッセージでは、label の値に置き換えることができます。
例えば、label = "お名前" を指定していた場合、エラーメッセージの設定文内の {label} が置換されて、「お名前を入力してください。」というようなエラーメッセージが表示されます。
※ エラーメッセージの設定は、message.ini 内の[message]セクションで指定します。
エラーメッセージは message.ini で設定しますが、アイテム別にその設定を上書きすることができます。
たとえば、checkbox アイテムに required = 1 を指定した場合は、message.ini の msg_required_check で指定されたエラーメッセージが表示されます。
このアイテムに限りエラーメッセージを変更したい場合は、アイテム設定に msg_required_check 項目を指定します。
[agreement]
type = checkbox
label = "規約の同意確認"
required = 1
msg_required_check = "規約にご同意頂ける場合は、「同意する」にチェックを入れてください。"
config.ini の [validation] セクションで error_parents 項目を指定している場合に、アイテム単位にその設定を上書きすることができます。
※この項目はバージョン 1.1.2 で追加されました。
error_parents = 2
必須アイテムにしたい場合は "1" を指定します。
required = 1
他のアイテムのいずれかが選択(入力)されているという条件で必須アイテムにしたい場合はそのアイテム名を指定します。
required_with = tel
※カンマ区切りで複数のアイテムを指定できます。
他のアイテムの全てが選択(入力)されているという条件で必須アイテムにしたい場合はそのアイテム名を指定します。
required_with_all = tel, fax
※カンマ区切りで複数のアイテムを指定できます。
他のアイテムのいずれかが選択(入力)されていないという条件で必須アイテムにしたい場合はそのアイテム名を指定します。
required_without = tel
※カンマ区切りで複数のアイテムを指定できます。
他のアイテムの全てが選択(入力)されていないという条件で必須アイテムにしたい場合はそのアイテム名を指定します。
required_without_all = tel, fax
※カンマ区切りで複数のアイテムを指定できます。
複数のアイテムでいずれかがチェックされているという条件にしたい場合は、次のように相互に他のアイテムを指定します。
;; ご利用用途
[use1]
type = checkbox
label = "ご利用用途1"
multiple = 1
required_without_all = use2, use3
msg_required_without_all = "ご利用用途1, 2, 3 のいずれかをご選択ください。"
[use2]
type = checkbox
label = "ご利用用途2"
multiple = 1
required_without_all = use1, use3
msg_required_without_all = "ご利用用途1, 2, 3 のいずれかをご選択ください。"
[use3]
type = checkbox
label = "ご利用用途3"
multiple = 1
required_without_all = use1, use2
msg_required_without_all = "ご利用用途1, 2, 3 のいずれかをご選択ください。"
他のアイテムが指定した値と一致するという条件で必須アイテムにしたい場合はそのアイテム名を指定します。
required_if = purpose, お見積依頼
※設定フォーマット:required_if = {アイテム名}, {入力値}, ... カンマ区切りで指定します。入力値は複数指定できます。
他のアイテムが指定した値と一致しないという条件で必須アイテムにしたい場合はそのアイテム名を指定します。
required_unless = purpose, お見積依頼
※設定フォーマット:required_unless = {アイテム名}, {入力値}, ... カンマ区切りで指定します。入力値は複数指定できます。
最大文字数を指定したい場合は、文字数を指定します。
例:最大文字数を500文字に指定する
maxlength = 500
最小文字数を指定したい場合は、文字数を指定します。
この設定項目は、入力がある場合(1文字以上)の場合に動作します。入力を必須(0文字はエラー)にしたい場合は required 項目も設定します。
例:最小文字数を3文字に指定する
minlength = 3
required = 1
最大数値を指定します。
次の場合は値が数値であることと、 100 以下であることを確認します。
max_number = 100
最小数値を指定します。
次の場合は値が数値であることと、 1 以上であることを確認します。
min_number = 1
指定アイテムの入力値や数値の掛け算を指定できます。 指定出来る値はアイテム名と * (半角アスタリスク) と 数値 (例: 1.08)のみです。 計算対象として price タイプ以外のアイテムも指定できますが、その場合は数値が指定されるようにバリデーションを設定するなどしてください。 計算後の値は小数点以下が切り捨てられます。 product項目を設定できるアイテムは price タイプのみです。
単価と数量から商品の金額を計算する例:
product = cms_unit * cms_quantity
税抜きの小計に0.08を掛けて消費税額を計算する例:
product = sub_total * 0.08
税抜きの小計に1.08を掛けて税込価格を計算する例:
product = sub_total * 1.08
指定アイテムの入力値や数値の足し算を指定できます。 指定出来る値はアイテム名と + (半角プラス) と 数値のみです。 計算対象として price タイプ以外のアイテムも指定できますが、その場合は数値が指定されるようにバリデーションを設定するなどしてください。 この項目を設定できるアイテムは price タイプのみです。
複数商品の合計金額を計算する例:
sum = cms_amount + mf_amount + db_amount
小計と消費税額を足して税込合計金額を計算する例:
sum = sub_total + tax
checkboxあるいは、selectタイプで複数要素を選択したい場合に "1" を指定します。
※ html側でもname属性に "[]" を付けるなどの対応が必要です。
multiple = 1
入力値が半角数字だけであることを確認したい場合は "1" を指定します。
入力が許可される文字は、半角の 0 から 9 です。
numeric = 1
入力値が電話番号書式であることを確認したい場合は "1" を指定します。
入力が許可される文字列は、2から5桁の半角数字 -(半角ハイフン) 1から4桁の半角数字 -(半角ハイフン) 4桁の半角数字です。
許可される文字列の例:
03-1234-5678
01234-1-5678
phone = 1
入力値が郵便番号書式であることを確認したい場合は "1" を指定します。
入力が許可される文字列は、3桁の半角数字 -(半角ハイフン) 4桁の半角数字です。
許可される文字列の例:
170-0011
postal = 1
正規表現(PHPのpreg_match関数)と入力値が一致することを検証します。(一致しない場合はエラー)
正規表現の記述方法はPHP マニュアルの正規表現 (Perl 互換)を参照してください。
漢字だけで入力されていることを検証する例:
regex = "/^\p{Han}+$/u"
msg_regex = "{label}には漢字だけを入力してください。"
regex = "/^\d{2,5}-?\d{1,4}-?\d{4}$/"
msg_regex = "{label}は、13桁以内の数字とハイフン(省略可能)で入力してください。"
正規表現(PHPのpreg_match関数)と入力値が一致しないことを検証します。(一致する場合はエラー)
正規表現の記述方法はPHP マニュアルの正規表現 (Perl 互換)を参照してください。
漢字の入力を禁止する設定例:
regex_not = "/\p{Han}/u"
msg_regex_not = "{label}には漢字は入力できません。"
入力値が他のアイテムの入力値と同じかどうかを確認したい場合は、比較対象のアイテム名を指定します。
"email" というアイテム名と同じであることを確認する場合は次のように指定します。
equal_to = email
特定のURLパラメータ(クエリストリング)をアイテムの初期値として受け取リたい場合はそのパラメータ名を指定します。
例えば、 http://example.com/contact/index.php?interest=products
というURLでメールフォームに遷移した場合に、「interest」の値を初期値にセットしたい場合は次のように指定します。
get_param = interest
※パラメータの値として日本語を送る場合は、あらかじめUTF-8でURLエンコードした値をパラメータにセットすることをお勧めします。
_zipcode, captcha はシステムで予約されているため指定できません。
入力値の全角・半角、カタカナ・ひらがな等を変換します。
「全角」英数字を「半角」に変換します。
convert_kana = a
「半角」英数字を「全角」に変換します。
convert_kana = A
「仮名」を全て「全角カタカナ」に変換します
convert_kana = KVC
「半角カタカナ」を「全角カタカナ」に変換し、「全角」英数字を「半角」に変換します。
convert_kana = KVa
「半角カタカナ」と「全角カタカナ」を「ひらがな」に変換します。
convert_kana = Hc
convert_kanaの設定値は、PHPのmb_convert_kana関数のオプションとして使われます。使用できる設定値については、こちらの「使用可能な変換オプション」をご確認ください。
http://php.net/manual/ja/function.mb-convert-kana.php
入力値のアルファベットを大文字に変換します。
convert_upper = 1
入力値のアルファベットを小文字に変換します。
convert_lower = 1
他のアイテムの入力値を参照して連結できます。
たとえば、電話番号を入力するために tel1, tel2, tel3 というアイテムを用意している場合に、concat を使うとそれらの入力値を連結して1つのアイテムの値とすることができます。他のアイテムの入力値はアイテム名を
{} (波括弧)で囲うことで参照できます。このケースでは、たとえば tel というアイテムに concat を指定して、tel1, tel2, tel3 の入力値を参照して連結するという活用方法があります。
※確認画面やメール本文で入力値を並べたい場合にはこの機能は不要ですが、CSV出力時に複数のアイテムの値を1つの列にまとめたい場合にはこの機能を活用する必要があります。
concat = "{tel1}-{tel2}-{tel3}"
主にエラーメッセージを定義します。
;; MicroEngine メールフォーム Message 設定ファイル
;;;===========================
;;; message セクション
[message]
;; エラーメッセージID
;; 入力画面でエラー発生時にだけ表示したい見出しの要素名を指定します。
;; エラーがない場合は、入力画面ではこのIDの要素を削除します。
error_message_id = error_message
;; 送信先未設定
msg_unset_to = "メール設定ファイルの送信先アドレス(to=)を設定してください。"
;; 選択項目の未選択エラーメッセージ
;; selectタイプ、radioタイプの必須項目エラーが発生した場合のメッセージを指定します。
msg_required_option = "{label}を選択してください。"
;; チェック項目の未チェックエラーメッセージ
;; checkboxタイプの必須項目エラーが発生した場合のメッセージを指定します。
msg_required_check = "{label}にチェックを入れてください。"
;; 入力項目の未選択エラーメッセージ
;; textタイプ、passwordタイプ、textareaタイプで必須項目エラーが発生した場合のメッセージを指定します。
msg_required = "{label}を入力してください。"
;; 他のアイテムのいずれかが存在している場合は必須
msg_required_with = "{others}が入力されている場合は、{label}を入力してください。"
;; 他のアイテムの全てが存在している場合は必須
msg_required_with_all = "{others}が入力されている場合は、{label}を入力してください。"
;; 他のアイテムのいずれかが存在しない場合は必須
msg_required_without = "{others}が入力されていない場合は、{label}を入力してください。"
;; 他のアイテムの全てが存在しない場合は必須
msg_required_without_all = "{others}が入力されていない場合は、{label}を入力してください。"
;; 他のアイテム値が指定値のどれかに一致する場合は必須
msg_required_if = "選択された{other}の場合は、{label}を入力してください。"
;; 他のアイテム値が指定値のどれにも一致しない場合は必須
msg_required_unless = "選択された{other}の場合は、{label}を入力してください。"
;; 最大文字数エラーが発生した場合のメッセージを指定します。
msg_maxlength = "{label}は {maxlength} 文字以内で入力してください。"
;; 最小文字数エラーが発生した場合のメッセージを指定します。
msg_minlength = "{label}は {minlength} 文字以上を入力してください。"
;; 最大値エラー
msg_max_number = "{label}は {number} 以下を入力してください。"
;; 最小値エラー
msg_min_number = "{label}は {number} 以上を入力してください。"
;; メールアドレス書式エラーが発生した場合のメッセージを指定します
msg_email = "入力した{label}の文字列を見直してください。"
;; 正規表現に一致しなかった場合のメッセージを指定します
msg_regex = "{label}は入力可能な書式と一致しません。入力内容を見直してください。"
;; 正規表現に一致した場合のメッセージを指定します
msg_regex_not = "{label}は入力可能な書式と一致しません。入力内容を見直してください。"
;; CAPTCHA(画像認証)に失敗した場合のメッセージを指定します
msg_captcha = "再度{label}を入力してください。"
;; tokenエラー
msg_token = "トークンを確認できません。お手数ですが、フォームを読み込みなおして再度ご入力ください。"
;; メール送信失敗
msg_send = "メールの送信に失敗しました。"
;; IP別の送信回数制限を超えた場合のメッセージを指定します。
msg_max_sends = "メールの送信可能な上限数に達しています。申し訳ありませんが、時間をおいてから再度お試しください。"
;; 半角数字以外の文字が入力された場合のメッセージを指定します。
msg_numeric = "{label}は半角数字を入力してください。"
;; 電話番号書式エラーが発生した場合のメッセージを指定します
msg_phone = "{label}は数字とハイフンで入力してください。"
;; 郵便番号書式エラーが発生した場合のメッセージを指定します
msg_postal = "{label}は3桁と4桁の数字をハイフンで区切って入力してください。"
;; 入力値が異なる場合のメッセージを指定します
msg_equal_to = "{label}と{equal_to_label}は同じ内容を入力してください。"
;; 拡張子エラー
msg_extensions = "アップロードできるファイルの拡張子は「{extensions}」です。"
;; ファイルサイズエラー
msg_max_filesize = "アップロードできるファイルサイズの最大値は {max_filesize}MBです。"
;; 計算エラー
msg_calculate = "計算に失敗しました。計算式:{expression}"
;; Formが見つからない
msg_form_not_found = "Form要素が見つかりません。"
管理者用メール本文は、body.txt ファイルの内容が使用されます。
自動返信メールの本文は、reply_body.txt ファイルの内容が使用されます。
フォームの入力内容をメール本文に差し込むには、アイテム名を波括弧で囲い {comment} のような文字列を記入します。
{_serial} は通し番号機能利用時に使われます。この他にアンダースコアで始まる予約アイテムには、{_date}、{_ip}、{_host}、{_up} があります。
設定例:
{name}様からお問い合わせがありました。
■お問い合わせ内容
{comment}
■名前
{name}
■メールアドレス
{email}
■郵便番号
〒{zipcode}
■住所
{addr}
■送信情報
日時:{_date}
IP:{_ip}
ホスト:{_host}
ユーザーエージェント:{_ua}
フォームの入力・確認・送信画面や、CAPTCHAの画像の表示や、住所入力支援機能のリクエストは全てこのエントリースクリプトを経由して処理されます。
index.php の一部:
/**
* ME_MAILFORM_DIR 設定
* me_mailform ディレクトリの名を変更した場合に定義する。
*
* 定義例
* define('ME_MAILFORM_DIR', '/me_mailform_contact/');
*/
define('ME_MAILFORM_DIR', '/me_mailform/');
/**
* DATA_ROOT 設定
* dataディレクトリの位置を変更した場合に定義する。
*
* 定義例
* ファイルシステムのルートディレクトリからのパスを、DATA_ROOT定数に指定する。
* define('DATA_ROOT', '/full/path/to/data');
*/
define('DATA_ROOT', dirname(__FILE__) . ME_MAILFORM_DIR . 'data');
1ディレクトリ内で複数のメールフォームを運用したい場合にこの設定を変更します。
例:
index.php のファイル名を contact.php に変更します。
me_mailform ディレクトリの名前を me_mailform_contact に変更します。
ME_MAILFORM_DIR 定数を /me_mailform_contact/ に変更します
データディレクトリ(me_mailform/data/)をドキュメントルート外に配置したい場合にこの設定を変更します。