「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
メールフォームプラグインV1.20(その8・入力エラーのチェック)
メールフォームプラグインでは、フォームに未入力のフィールドがあるときに、送信エラーのページを表示する機能があります。
今日はその使い方を解説します。
1.標準のエラーチェック
エラーチェックについて何も指定しない場合は、以下の状況のときに、送信エラーのページが表示されます。
- 名前/メールアドレス/本文のいずれかが未入力のとき
- メールアドレスの形式が正しくない場合
送信エラーページのテンプレートでは、「MTErrorMessage」というタグで、エラーメッセージを表示することができます。
例えば、本文が未入力のままで送信ボタンがクリックされた場合、MTErrorMessageタグの出力は、「本文を入力してください。」になります。
また、この後で述べる「MTMailPreviewIfFieldError」および「MTMailPreviewIfEMailError」のタグを使って、フィールドごとに個別にエラーをチェックすることもできます。
2.入力必須フィールドの指定
入力必須のフィールドを変えることもできます。
例えば、メールアドレスが未入力でもエラーにならないようにしたり、自分で追加したフィールドを入力必須にしたりすることができます。
入力必須のフィールドを指定するには、メールフォーム/送信前確認/送信エラーの各テンプレートのフォーム部分に、以下のようなタグを追加します。
複数のフィールドを入力必須にする場合は、フィールド名をコンマで区切ります。
<input type="hidden" name="mail_error_check_fields" value="エラーチェックを行うフィールドの名前" />
例えば、標準のメールフォームに、「mail_foo」という名前のフィールドを追加しているとします。
そのフィールドと、名前/本文を入力必須にしたい場合は、メールフォーム/送信前確認/送信エラーの各テンプレートのフォーム部分に、以下のようなタグを追加します。
<input type="hidden" name="mail_error_check_fields" value="mail_author,mail_text,mail_foo" />
なお、入力必須のフィールドを指定する場合で、名前/メールアドレス/本文を入力必須にしたい場合は、上の例にもあるように、それらのフィールド名もmail_error_check_fieldsに入れる必要があります。
また、全てのフィールドのエラーチェックを無効にするには、以下のようにします(ただし、「none」という名前のフィールドは作らないようにします)。
<input type="hidden" name="mail_error_check_fields" value="none" />
3.フィールドごとに未入力をチェックする
入力必須フィールドに入力がない場合、送信エラーページが表示されます。
その際に、エラーのフィールドごとに何らかのメッセージを表示したり、書式を変えたりすることもできます。
入力必須フィールドが未入力になっているかどうかは、「MTMailPreviewIfFieldError」という条件タグで判断します。
このタグの書き方は以下のようになります。
<MTMailPreviewIfFieldError name="未入力を調べるフィールドの名前"> フィールドが未入力の時に出力する内容 </MTMailPreviewIfFieldError>
例えば、本文(mail_text)を入力必須にするように指定していて、かつ本文が未入力されていないときに、「本文の入力は必須です。」というエラーメッセージを表示したいとします。
その場合、以下のようにタグを組みます。
<MTMailPreviewIfFieldError name="mail_text">本文の入力は必須です。</MTMailPreviewIfFieldError>
4.メールアドレスのエラーチェック
メールアドレス(mail_email)の形式が正しくない場合(メールアドレスに使えない文字が含まれている場合)にも、送信エラーページが表示されます。
メールアドレスの形式が正しくない時にエラーメッセージを表示するには、「MTMailPreviewIfEMailError」という条件タグを使います。
このタグの書き方は以下のようになります。
<MTMailPreviewIfEMailError> メールアドレスの形式が正しくないときに出力する内容 </MTMailPreviewIfEMailError>
5.前後のエントリー
メールフォームプラグインは解説が長いので、エントリーを複数に分けています。
前後のエントリーは以下のリンクで参照することができます。
また、サイドバーの「関連するエントリー」の箇所に、メールフォーム関連のエントリーの一覧が表示されていますので、そちらもご利用ください。
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください
martini
メールフォームプラグイン利用させていただいています。
「フィールドごとに未入力をチェックする」は送信前確認ページには適用されないのでしょうか?
「送信」ボタンをクリックした時と同じように「確認」ボタンをクリックされた時にもエラーチェックを行いたいのですが・・・
私の設定の問題なのでしょうか?
壱からmartiniへの返信
>martiniさん
こんにちは。
送信前確認ページでも、エラーチェックを行うことができます。
送信エラーページのテンプレートと同様に、送信前確認ページのテンプレートで、MTMailPreviewIfFieldErrorタグを使ってエラーチェックを行います。
エレキ
最近、ブログに設置したMailFormプラグインを利用したスパムメールが送られてくるようになりました。
そこで参照先のURLのページ下側にあるチェックボックスをチェックしないとエラーを返すようにしたいのですが、なかなか意図したような動作をしません。
<input type="hidden" id="mail_error_check_fields" name="mail_error_check_fields" value="mail_author,mail_email,mail_text,mail_spam_check" />
上記をメール送信フォームテンプレート、mail_error、mail_previewのformタグ内に記述したのですが、チェックボックス(mail_spam_checkフィールド)が未記入(チェックなし)のままでもメールが送信できしまいます。
なにか対策はございませんでしょうか?
お忙しいところ申し訳ありませんが、ご教授して下さると、本当に助かります。
ぜひよろしくお願いいたします:pp_07.gif:
壱からエレキへの返信
>エレキさん
こんにちは。プラグインご利用ありがとうございます。
こちらでも試してみましたが、チェックボックスでは入力必須の設定が利きませんでした。
とりあえず、チェックボックスではなく、テキストボックスに何かを入力してもらうという形にしておいてください。
なお、チェックボックスの件は修正したいと思いますので、しばらくお待ちください。
エレキからエレキへの返信
# 壱 さん
お返事ありがとうございます!
プログラムのほうに原因があったのですね。
とりあえず、時間が取れるときにテキストボックス仕様に変更してみようと思います。
どうもご対応ありがとうございました:pp_05.gif:
Hiro AOKI
メールフォームプラグイン利用させていただいています。
ありがとうございます。
「入力必須フィールドの指定」を新たに設定しても、「確認」ボタン⇒「送信」ボタンと進んだ場合は、未入力であっても送信できてしまいました。
私の設定の問題なのでしょうか?
壱からHiro AOKIへの返信
>Hiro AOKI様
こんにちは。プラグインご利用ありがとうございます。
ご質問の件ですが、動作状況からすると、送信前確認ページのテンプレートに、「<input type="hidden" name="mail_error_check_fields" ・・・>」の記述が入っていないのではないかと思います。ご確認ください。
また、送信エラーページのテンプレートにも上記の記述が必要です。
hiro
プラグインを使わせ頂いています。ありがとうございます。
質問なのですがエラーを吐き出すときに、郵便番号の入力を二つに分けている場合に、二つのどちらかが空白の場合にエラーメッセージが一つだけでるように設定できないでしょうか。
下記のようにしてできるかなと思いましたができませんでした。
本文の入力は必須です。
よろしくお願いいたします。
壱からhiroへの返信
>hiroさん
こんにちは。プラグインご利用ありがとうございます。
ご質問のようなことは、申し訳ありませんが行うことはできません。
JavaScriptを使って、クライアント側で処理してください。
エレキ
お久しぶりです。以前問い合わせ致しましたチェックボックスの件についてです。
>>なお、チェックボックスの件は修正したいと思いますので、しばらくお待ちください。
修正の予定はいつごろでしょうか?
忙しいところ申し訳ございませんが、教えてくださるとうれしいです。
壱からエレキへの返信
>エレキさん
こんにちは。
申し訳ありませんが、予定は未定です。
とみぃ
こんにちは、あちらこちらでお会いしてお世話になっています。今回もプラグインに助けられています。
チェックボックスで、入力チェックがされない件、
おそらくラジオボタンでも同様ではないでしょうか?
ラジオボタンでタグを
つかっても出力されませんでした。
通常、チェックボックスは、評価するnameが
複数になり、ラジオボタンはnameが単数ですよね。
チェックと違い、出来るかなとおもったのですが、
一応再現性があるかお時間あるときにご確認いただけますか?
更なるバージョンアップ期待しています!
aa
はじめまして。プラグインを使わせていただいています。
No.6 Hiro AOKI さんの質問内容と同じ現象が起こっています。
すべてのテンプレートに、「」の記述はしています。
その他の原因があるのでしょうか。よろしくお願いいたします。
aaからaaへの返信
上記質問「」内はmail_error_check_fieldsの内容です。
壱からaaへの返信
>aaさん
こんにちは。
ご質問の件ですが、メールフォームを見せていただき、また具体的な動作状況(未入力なのに送信できてしまうフィールド)を教えていただければ、原因が分かるかも知れません。
aa
壱さん。
ご返信ありがとうございます。
ご指摘のとおり、送信確認テンプレートに
<input type="hidden" name="mail_phone" id="mail_phone" value=" name="mail_phone"$>" />
上記のタグを入れたところ、正常に動作いたしました。
お忙しい中、丁寧に教えていただきありがとうございました。
これからいろいろとカスタマイズしてみたいと思います。
熊
お忙しいところ恐れ入ります。
メールアドレスの形式チェックが正しく動作いたしません。
やや伝えにくい内容なのですが、プレビューやエラー画面に下記のタグを使用していると、正しい形式にもかかわらず必ずメールアドレスの形式が正しくない旨のメッセージが表示されます。
ただし、すべての必須項目が入力されている状態で送信ボタンを押下すると、何のメッセージも表示されず、メールフォームの送信も正常に行われます。
<MTMailPreviewIfEMailError>
メールアドレスの形式が正しくないときに出力する内容
</MTMailPreviewIfEMailError>
私だけの環境で起きている現象でしょうか?
熊から熊への返信
タグの綴りが間違っていたということで、正しくしたら解決いたしました。
ご迷惑をおかけしました。