メールフォームプラグインV2.0では、フォームの入力内容や、メール送信に関して、各種のエラー判別を行うことができます。
今日はその概要を解説します。
1.判別可能なエラーの種類
メールフォームプラグインV2.0では、フォームでの入力について、以下のようなエラーを判別することができます。
- 未入力フィールドの判別
- チェック必須チェックボックスで、チェックがオンにされていないことの判別
- メールアドレスの形式が正しいかどうかの判別
- ユーザーにメールアドレスを2回入力させ、両者が一致しているかどうかを判別
また、メールの送信時に、以下のようなエラーを判別することができます。
- メール送信時のエラーの判別
- 自動返信メール送信時のエラーの判別
- メールの連続送信エラーの判別
- IPアドレスによる制限の判別
- スパムチェックに引っ掛かったかどうかの判別
2.エラーチェックを行うタイミング
標準の状態では、フォームで「送信」ボタンがクリックされたときに、前述のすべてのエラーを判別するようになっています。
一方、フォームで「確認」ボタンがクリックされたときには、フォームの入力内容のエラーの判別は行いません。
確認時にも、フォームの入力内容のエラーを判別するようにすることもできます。
それには、メールフォームの設定で、「フォームのチェック項目」の部分の「送信確認時にもエラーチェックする」のチェックをオンにします。
3.エラーメッセージの表示
エラーがあったときに、そのことを単に表示するだけであれば、「MTErrorMessage」というタグを使います。
送信エラーのテンプレートの中で、このタグを使うことができます。
また、送信確認時にもエラーを判別するように設定した場合は、送信確認のテンプレートでも、このタグを使うことができます。
送信確認のテンプレートでこのタグを使う場合は、以下のようにして、エラーメッセージがある時だけそれを表示するようにするとよいでしょう。
<p>入力内容に以下のエラーがあります。</p> <MTIfNonEmpty tag="ErrorMessage"> <blockquote><MTErrorMessage></blockquote> </MTIfNonEmpty>
なお、フィールドごとに細かくエラーメッセージを表示することもできます。
その方法は後日解説します。




![Hardcore Will Never Die, But You Will [Disc 2] Hardcore Will Never Die, But You Will [Disc 2]](http://userserve-ak.last.fm/serve/34s/71241534.jpg)
![Hardcore Will Never Die, But You Will [Bonus Tracks] Hardcore Will Never Die, But You Will [Bonus Tracks]](http://userserve-ak.last.fm/serve/34s/67192634.jpg)





コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
メールフォームとても有用なプラグインプロダクトだと感心して使っておりますが、どうしても解決出来ない事があります
「送信確認時にもエラーチェックする」にチェックを入れても、プレビューの画面になってしまい、エラーが発生しているのにエラー画面に遷移しません。
こういった場合、どこを確認するのが良いでしょうか?
通常の送信では、エラーチェックされますので、何か単純な事を見落としているようなきがしております。
何か手がかりになる事、ご教授頂ければ幸いです
>konnnoさん
こんにちは。
「送信確認時にもエラーチェックする」をチェックした場合も、「送信確認」ボタンをクリックした際には、送信確認テンプレートに沿ってページが表示されます。
ただ、「送信確認時にもエラーチェックする」をチェックしなかった場合とは異なり、送信確認テンプレートの中でも、エラーチェック関係のテンプレートタグを使うことができるようになります。
送信確認ページと送信エラーページとでは、ページのデザインが異なることもあるかと思い、上に書いたような仕様にしています。
壱さん
ご回答ありがとうございます!
なるほど、、エラーチェックしているときには、エラーが発生した際に、エラーテンプレートに自動的に遷移すると思っておりましたが、ちがうのですね、、
アドバイスとして、送信確認ページでは、フォームを表示させずに、入力データだけを表示して、hiddenで渡すような画面を作る際には、テンプレート内でエラーチェックし、
・エラーした場合(この場合はフォームを表示)
・エラーしなかった場合(この場合は値を表示、フォーム送信データは全てhidden)
のように表示処理を別けるのが良いのでしょうか?
アドバイス頂ければ助かります
>konnnoさん
こんにちは。
お書きになったような手法で良いと思います。
あるいは、エラーのあるなしに関係なくフォームを再表示して、エラーがあるときだけその欄にエラーメッセージを表示する、といった方法も考えられます。
壱さん
ありがとうございます。
やり方いろいろあると思いますが、とても参考になりました。
エラーテンプレートを上手く共有して作りたいと思います
お世話になります。
昨日来、導入先のクライアントのフォームに大量のスパムが送信されて来るようになっており、早急に対応したいのですが、以下の判別の設定はどのように行うことができますでしょうか。
・メールの連続送信エラーの判別
・IPアドレスによる制限の判別
・スパムチェックに引っ掛かったかどうかの判別
よろしくお願いいたします。
>上田さん
こんにちは。
>メールの連続送信エラーの判別
同一IPアドレスから、1分以内にメールが送信されていれば、連続送信エラーとするようになっています。
ただ、スパマーはさまざまなIPアドレスを使ってくると思いますので、同一IPアドレスからの連続送信のチェックは効果がないと思います。
>IPアドレスによる制限の判別
メールフォームからメールが送信されると、そのことがMovable Typeのログに記録されます。
ログには送信元のIPアドレスがありますので、そのIPアドレスからのアクセスを.htaccess等でブロックすると良いと思います。
>スパムチェックに引っ掛かったかどうかの判別
メールフォームのスパムチェックは、Movable Type内蔵のコメント/トラックバックのスパムチェック機能をそのまま利用しています。
壱さま
早速のご回答ありがとうございます。
新バージョン開発の際には、是非、画像認証機能などを装備して頂けると凄く助かります。
昨今のサイバー攻撃の報道の影響もあり最近クライアントも些かナーバスな傾向があるため、ご検討頂けますと幸いです。