入力画面 -> 確認画面 -> 完了画面
上記のように遷移するオーソドックスなメールフォームのサンプルモジュールです。
DEMO
http://lmd.root-n.com/demo/mailform/
上記DEMOは、アプリケーションのルートディレクトリが /demo であり、モジュールグループは「mailform」になります。
DOWNLOAD
mailform モジュール一式をダウンロードできます。
- tar.gz: mailform.tar.gz
- zip: mailform.zip
※このモジュールは Windows に対応していません。
設置手順
- モジュール一式をダウンロードし、展開します。
- ファイルを所定の位置にアップロードします。
- モジュール
- mailform/* ⇒ Lambda/apps/<APP_DIR>/mailform/*
- メールテンプレート
- mailtemplates/mailform.php ⇒ Lambda/mailtemplates/mailform.php
- リソース
- resources/* ⇒ Lambda/resources/*
- バリデーター
- validators/mailform.php ⇒ Lambda/validators/mailform.php
- 定数「MAILTO_ADMIN」の設定変更
- ブラウザでアクセスして、動作確認を行います。
- http://<DOMAIN>/mailform/
mailform/
+—mailform/
| complete.view.php
| confirm.view.php
| foot.view.php
| head.logic.php
| head.view.php
| index.logic.php
| index.view.php
|
+—mailtemplates/
| mailform.php
|
+—resources
| browser.php
| os.php
| within.php
|
\—validators/
mailform.php
+—mailform/
| complete.view.php
| confirm.view.php
| foot.view.php
| head.logic.php
| head.view.php
| index.logic.php
| index.view.php
|
+—mailtemplates/
| mailform.php
|
+—resources
| browser.php
| os.php
| within.php
|
\—validators/
mailform.php
Lambda/apps/<APP_DIR>/mailform/index.logic.php
define('MAILTO_ADMIN', '');
↓
define('MAILTO_ADMIN', 'your_name@example.com');
↓
define('MAILTO_ADMIN', 'your_name@example.com');
メールアドレスを指定することで、実際に送信を行う設定になります。
プログラムコードの一部抜粋
プログラムコードを一部抜粋して掲載します。
下記は、DEMOで動作している、mailform.index ロジックモジュラーのソースコードになります。
/path/to/Lambda/apps/<APP_DIR>/mailform/index.logic.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | <?php /***************************************************************************** * * サンプルのため、冗長なコメントになっています。 * ****************************************************************************/ /** * 送信テストを行う場合は、メールアドレスを設定してください。 * * サンプルのため、ここに定義していますが、本来このような定数は、 * Lambda/apps/<APP_DIR>/app.conf.php に定義することが推奨されます。 */ define('MAILTO_ADMIN', ''); /** * POSTパラメーターを配列に格納。 * * こうしておくと、後続処理の setResponse や invokeValidator に値を渡す際に * 簡素に記述できます。 */ $p = array( 'name' => $lmd->httpPost('name'), 'email' => $lmd->httpPost('email'), 'os' => $lmd->httpPost('os'), 'within' => $lmd->httpPost('within'), 'browser' => $lmd->httpPost('browser', array()), 'message' => $lmd->httpPost('message'), ); /** * レスポンスをアサインしておく */ $lmd->setResponse($p); if ($lmd->hasHttpPost('confirm') || $lmd->hasHttpPost('complete')) { /** * 【確認】または【送信】ボタンが押された。 * * バリデーターを実行して、入力値の検証を行います。 * ※ バリデーター定義は、Lambda/validators/mailform.php にあります。 */ $lmd->invokeValidator('mailform', $p); } if ($lmd->hasValidatorError()) { /** * 入力エラーが発見された。 * * ⇒ 「入力画面」に遷移させる。 */ return $lmd->setPrep('mailform.index'); } if ($lmd->hasHttpPost('confirm') && ! $lmd->hasValidatorError()) { /** * 【確認】ボタンが押され、入力エラーが無い。 * * ⇒ 「確認画面」に遷移させる。 */ return $lmd->setPrep('mailform.confirm'); } if ($lmd->hasHttpPost('complete') && ! $lmd->hasValidatorError()) { /** * 【送信】ボタンが押され、入力エラーが無い。 * * ⇒ メール送信を実行します。 * * ※ テンプレートは、Lambda/mailtemplates/mailform.php にあります。 */ $to = MAILTO_ADMIN; $from = $p['email']; Mail::setTemplate('mailform'); Mail::setParams($p); if ($to) Mail::send($to, $from); /** * リロード操作での二重送信を防止するため、「完了画面」へはリダイレクトさせます。 */ $lmd->redirect($lmd->httpRequestDir().'/complete'); exit; } /***************************************************************************** * ここまで来たら、暗黙のうちに mailform/index.prep.php に処理が移ります。 * mailform/index.prep.php がない場合は、mailform/index.view.php に処理が移ります。 */ |
次ページ: ファイルアップロード