お知らせ

PHPによるWordPressカスタマイズブック2009年9月8日

PHPによるWordPressカスタマイズブック」が発売されました。
WordPressのテンプレートにPHPのプログラムを書いてカスタマイズする方法や、WordPressのデータベースにPHPでアクセスする方法、またWordPressのプラグインの開発方法など、WordPressをより深く活用したい方に最適な一冊です。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

メールフォームプラグインV1.20(その8・入力エラーのチェック)

| コメント(18) | トラックバック(0)

メールフォームプラグインでは、フォームに未入力のフィールドがあるときに、送信エラーのページを表示する機能があります。
今日はその使い方を解説します。

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.前後のエントリー

メールフォームプラグインは解説が長いので、エントリーを複数に分けています。
前後のエントリーは以下のリンクで参照することができます。

前のエントリー(その7・ラジオボタン/セレクトの追加)

また、サイドバーの「関連するエントリー」の箇所に、メールフォーム関連のエントリーの一覧が表示されていますので、そちらもご利用ください。

はてなブックマークの情報

トラックバック(0)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/801.

コメント(スレッド9件,コメント18件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 martini : (無題)

メールフォームプラグイン利用させていただいています。
「フィールドごとに未入力をチェックする」は送信前確認ページには適用されないのでしょうか?
「送信」ボタンをクリックした時と同じように「確認」ボタンをクリックされた時にもエラーチェックを行いたいのですが・・・

私の設定の問題なのでしょうか?

No.2  Author Profile Page: (無題)

>martiniさん
こんにちは。

送信前確認ページでも、エラーチェックを行うことができます。
送信エラーページのテンプレートと同様に、送信前確認ページのテンプレートで、MTMailPreviewIfFieldErrorタグを使ってエラーチェックを行います。

No.3 エレキ : (無題)

最近、ブログに設置した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フィールド)が未記入(チェックなし)のままでもメールが送信できしまいます。

なにか対策はございませんでしょうか?

お忙しいところ申し訳ありませんが、ご教授して下さると、本当に助かります。
ぜひよろしくお願いいたします!

No.4  Author Profile Page: (無題)

>エレキさん
こんにちは。プラグインご利用ありがとうございます。

こちらでも試してみましたが、チェックボックスでは入力必須の設定が利きませんでした。
とりあえず、チェックボックスではなく、テキストボックスに何かを入力してもらうという形にしておいてください。
なお、チェックボックスの件は修正したいと思いますので、しばらくお待ちください。

No.5 エレキ : (無題)

# 壱 さん

お返事ありがとうございます!
プログラムのほうに原因があったのですね。
とりあえず、時間が取れるときにテキストボックス仕様に変更してみようと思います。
どうもご対応ありがとうございました音符

No.6 Hiro AOKI : (無題)

メールフォームプラグイン利用させていただいています。
ありがとうございます。

「入力必須フィールドの指定」を新たに設定しても、「確認」ボタン⇒「送信」ボタンと進んだ場合は、未入力であっても送信できてしまいました。

私の設定の問題なのでしょうか?

No.7  Author Profile Page: (無題)

>Hiro AOKI様
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、動作状況からすると、送信前確認ページのテンプレートに、「<input type="hidden" name="mail_error_check_fields" ・・・>」の記述が入っていないのではないかと思います。ご確認ください。
また、送信エラーページのテンプレートにも上記の記述が必要です。

No.8 hiro : (無題)

プラグインを使わせ頂いています。ありがとうございます。

質問なのですがエラーを吐き出すときに、郵便番号の入力を二つに分けている場合に、二つのどちらかが空白の場合にエラーメッセージが一つだけでるように設定できないでしょうか。

下記のようにしてできるかなと思いましたができませんでした。

本文の入力は必須です。

よろしくお願いいたします。

No.9  Author Profile Page: (無題)

>hiroさん
こんにちは。プラグインご利用ありがとうございます。

ご質問のようなことは、申し訳ありませんが行うことはできません。
JavaScriptを使って、クライアント側で処理してください。

No.10 エレキ : (無題)

お久しぶりです。以前問い合わせ致しましたチェックボックスの件についてです。

>>なお、チェックボックスの件は修正したいと思いますので、しばらくお待ちください。

修正の予定はいつごろでしょうか?
忙しいところ申し訳ございませんが、教えてくださるとうれしいです。

No.11  Author Profile Page: (無題)

>エレキさん
こんにちは。

申し訳ありませんが、予定は未定です。

No.14 とみぃ : (無題)

こんにちは、あちらこちらでお会いしてお世話になっています。今回もプラグインに助けられています。

チェックボックスで、入力チェックがされない件、
おそらくラジオボタンでも同様ではないでしょうか?
ラジオボタンでタグを
つかっても出力されませんでした。

通常、チェックボックスは、評価するnameが
複数になり、ラジオボタンはnameが単数ですよね。

チェックと違い、出来るかなとおもったのですが、
一応再現性があるかお時間あるときにご確認いただけますか?

更なるバージョンアップ期待しています!

No.15 aa : (無題)

はじめまして。プラグインを使わせていただいています。
No.6 Hiro AOKI さんの質問内容と同じ現象が起こっています。

すべてのテンプレートに、「」の記述はしています。

その他の原因があるのでしょうか。よろしくお願いいたします。

No.16 aa : (無題)

上記質問「」内はmail_error_check_fieldsの内容です。

No.17  Author Profile Page: (無題)

>aaさん
こんにちは。

ご質問の件ですが、メールフォームを見せていただき、また具体的な動作状況(未入力なのに送信できてしまうフィールド)を教えていただければ、原因が分かるかも知れません。

No.19 aa : (無題)

壱さん。
ご返信ありがとうございます。
ご指摘のとおり、送信確認テンプレートに
<input type="hidden" name="mail_phone" id="mail_phone" value=" name="mail_phone"$>" />
上記のタグを入れたところ、正常に動作いたしました。

お忙しい中、丁寧に教えていただきありがとうございました。
これからいろいろとカスタマイズしてみたいと思います。

No.20 熊 : メールアドレスの形式チェックについて

お忙しいところ恐れ入ります。

メールアドレスの形式チェックが正しく動作いたしません。
やや伝えにくい内容なのですが、プレビューやエラー画面に下記のタグを使用していると、正しい形式にもかかわらず必ずメールアドレスの形式が正しくない旨のメッセージが表示されます。

ただし、すべての必須項目が入力されている状態で送信ボタンを押下すると、何のメッセージも表示されず、メールフォームの送信も正常に行われます。

<MTMailPreviewIfEMailError>
メールアドレスの形式が正しくないときに出力する内容
</MTMailPreviewIfEMailError>

私だけの環境で起きている現象でしょうか?

No.21 熊 : 解決いたしました

タグの綴りが間違っていたということで、正しくしたら解決いたしました。
ご迷惑をおかけしました。

コメントする