Top > PukiWiki > 初心者 > プラグイン > メールフォーム

ソース

Pukiwiki日本語本家

pkwkmail.inc.php

サマリ確認画面のあるメールフォームを生成するプラグインです。
リビジョン1.0.0b
対応バージョン1.4.7
投稿者jidaikobo?
投稿日2007-02-05 (月) 09:06:33

このプラグインは?

確認画面のあるメールフォームを生成するプラグインです。pukiwiki.ini.php の PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK を 0(有効)にしてお使いください。プラグイン呼び出しの書式は下記の通りです。

#pkwkmail{{
ここにフォームの部品やメッセージを書く
}}

このプラグインは、誰でも編集できてしまうとスパムメールの発射台になってしまうので、ページが凍結状態でないと動かないようになっています。しかし、凍結状態のままだと、編集の結果を見るのが煩わしくなってしまうので、編集時には、プラグインのソースコード冒頭の PKWKMAIL_FREEZE_CHECK の値を 0 にすると、注意喚起をしつつ、編集結果を確認していじれるようになっています。実際の運用時には、凍結状態で使うようにしてください。

フォーム部品の作り方

フォームの部品は attr という文字列から始めます。
たとえば氏名の入力欄を作る場合、下記のような書式になります。

attr = 'ご氏名','text','1','','お名前','(15)'

この書式の意味は、「th がご氏名となっている、input 入力欄をつくる。そのフィールドの初期値は、お名前。この項目は入力必須項目で、size は 15。」という意味です。

attr = '趣味','checkbox','1','(野球,テニス,サッカー)','(テニス,サッカー)'

この場合は、チェックボックスを生成します。th が チェックボックスで、その候補が、4つめのシングルクォーテーション内に括弧書き、コンマ区切りで並んでいます。5つめのシングルクォーテーション内には、初期選択値が入っています。

項目の種類には、text, password, option, radio, checkbox, textarea に加えて、email というものがあります。email だけは特別扱いで、自動返信の機能を使う場合は、自動返信先になる予定のフィールドを email としてください。
また checkbox-br と radio-br という項目にすると、強制改行がはいります。
あと、Katsumi Saito さんの改造で、初期値に「%DATE%」を入れると、当日の日付が表示されるようになりました。

これらの設定値は、admin_adrs という値で設定したメールアドレスに送信されます(admin_adrs を設定しない場合は、pukiwiki.ini.phpの$notify_toで設定したメールアドレスに送信)。

フォーム部品についてもうちょっと詳しく

変数名th種類必須選択肢初期値サイズ
attrご氏名text1お名前(15)
attr趣味checkbox1(野球,テニス,サッカー)(テニス,サッカー)

最初に「attr=」を書いて、続けて属性を設定します。シングルクォーテーションの順序でフォーム部品を作るので、たとえば「選択肢」が存在しないようなフォーム部品の場合、空のシングルクォーテーションを用意します。

checkbox, radio, option の選択肢は配列であることを明示するので、半角括弧でくくります。初期値(初期選択値)も同様に半角括弧でくくります。

text と password と emailと textarea は、ボックスのサイズを指定できますが、これも半角括弧でくくります。

以下に文例を記載しておきます。

attr = 'ご氏名','text','1','','お名前','(15)'
attr = 'ふりがな','text','0','','おなまえ','(15)'
attr = 'メールアドレス','email','1','',''
attr = '性別','option','1','(,女,男)'
attr = 'メニュー','radio','1','(うどん,そば,ラーメン)',''
attr = '趣味','checkbox-br','1','(野球,テニス,サッカー)','(テニス,サッカー)'
attr = '内容','textarea','0','','なにか文章を書いてください','(15,20)'
admin_adrs ='example@example.com'

これはおまけです。当方京都在住なので、京都が初期値です :)*1*2

attr = '都道府県','option','1','(北海道,青森県,岩手県,宮城県,秋田県,山形県,福島県,
東京都,茨城県,栃木県,群馬県,埼玉県,千葉県,神奈川県,新潟県,富山県,石川県,福井県,
山梨県,長野県,岐阜県,静岡県,愛知県,三重県,京都府,滋賀県,大阪府,兵庫県,奈良県,
和歌山県,鳥取県,島根県,岡山県,広島県,山口県,徳島県,香川県,愛媛県,高知県,福岡県,
佐賀県,長崎県,熊本県,大分県,宮崎県,鹿児島県,沖縄県)','京都府'

余談

WCAG の 10.4 では、フォームの入力例にあたる初期値を入れておくことを推奨していますが、フィールドにキャレットが移動したときに、初期値が選択された状態を解除してしまうことがあり、音声利用環境では、これに気づかずまちがった値を送信してしまうことがあります。下記の default_explanation などで、入力欄に移動したときに、初期値を消すように注意を喚起するのも手かと思います。

ダウンロード

すべて UTF-8 です。EUC の場合は、文字コードを変更してお使いください*3
基本的に最新版の方がよいはずですが、検証用に過去バージョンを残しています。

メッセージ類のカスタマイズ

default_message

default_message = 'default_messageを設定してください。'

当該ページの本文にあたります。確認段階に進むと表示されなくなります。wiki書式扱いになります。

default_explanation

default_explanation='
*フォーム
以下フォームに必要事項をご記入願います。''入力必須項目''について、
ご記入漏れのないようにお願いいたします。'

入力用フォームに付帯する説明文です。wiki書式扱いになります。

reply_message_require

reply_message_require='1'

0か1を指定します。初期値は1(自動返信メールを送る)になっています。
自動返信メールを送る、にしていても問い合わせをした人が、自動返信不要とすることができます。
自動返信を不要にされた場合と、この値をゼロにしている場合は、管理者には、「Copy has not been sent.」の情報が送信されます。

admin_return_allowed

admin_return_allowed='1'

0か1を指定します。初期値は1(自動返信メールの From を追加する)になっています。

reply_message

reply_message='このメールはシステムによる自動返信です。
以下、お問い合わせいただいた内容です。'

自動返信メールの本文です。この文章に続いて送信した値がメールされます。

reply_message_foot

reply_message_foot='ありがとうございました。'

自動返信メールの本文です。送信した値の下に表示されます。

confirm_message

confirm_message = ''''必要項目はすべて入力されています。
'''もう一度、内容を修正したい場合は、以下に続くフォームを編集してください。'

必要項目がすべて入力されている場合に出力される、最後の確認メッセージです。wiki書式扱いになります。

confirm_message_title

confirm_message_title='送信確認'

必要項目がすべて入力されている場合に出力される、最後の画面の大見出しです。

confirm_message_reply

confirm_message_reply = '送信内容のご確認用メールが不要の場合は、
下記チェックを外して「送信する」を押してください。'

reply_message_requireが1になっているとき、お問い合わせをする人は自動返信の受け取りを自分で選ぶことになります。このときの説明文です。wiki書式扱いになります。

confirm_message_yet

confirm_message_yet = '下記項目をすべて入力の上、
送信しなおしてください。'

入力必須項目の確認です。wiki書式扱いになります。

confirm_message_fromtitle

confirm_message_fromtitle='*編集・内容確認用フォーム'

送信内容確認用フォームの前掲文です。wiki書式扱いになります。

confirm_message_yet

confirm_message_yet='入力必須項目をご確認ください'

確認用フォームの前掲文です。wiki書式扱いになります。

finish_message

finish_message = '下記の通り、メールを送信しました。~
しかるべき反応がない場合は、システム不具合など理由でメールが
届いていない可能性があります。お手数ですが、別の手段でお問い合わせください。'

メール送信後のメッセージです。wiki書式扱いになります。

finish_message_return

finish_message_return = '[[トップページへもどる>FrontPage]]'

メール送信後の送信済みデータの下に出る文章です。wiki書式扱いになります。

finish_message_title

finish_message_title='メールを送信しました'

メール送信後の見出しです。

contact_title_to_admin

contact_title_to_admin='お問合せがありました'

管理者に向かって送信されるメールの件名です。

contact_title_to_client

contact_title_to_client='自動返信:お問合せをいただきました'

自動返信で送信されるメールの件名です。

domain_check

domain_check='1'

0か1を指定します。初期値は1(メールのドメインの存在チェックをする)になっています。このチェックを緩めたいときに設定してください。

ライセンス

footnote

  • このプラグインは XOOPS のお問い合わせモジュール「InquirySP」に影響を受けて作りました。ので InquirySP の作者の Marijuana さんへの謝辞がソース上にありますが、 Marijuana さんが作った訳ではないので、仕様や動作について、くれぐれも Marijuana さんに問い合わせなどしないようにしてください。
  • 仕事でプログラミングが必要なときは、外注しているので、僕自身はウェブ屋ですが PHPについては初心者です。アドバイスなどいただけると幸いです。

履歴

2007年2月5日月曜日人柱版公開ver 0.9
2007年2月14日水曜日checkbox-brとradio-brの追加ver 0.9.1
2007年2月23日金曜日th 内に入る質問項目中に&br;があった場合は改行ver 0.9.2
2007年3月1日木曜日使い方があっているのかどうかいまいち分ってないが、$digest を作ってみた。また質問項目中に&br;があった場合、送信メールにはこの br を送らないように修正ver 0.9.4
2007年3月2日金曜日質問項目中に&br;があった場合の不具合修正と、コメントをもうちょっと詳細にしたver 0.9.5
2007年3月9日金曜日readme の文例をちょっと改善*4。$notify_to の修正*5。checkbox-br と radio-br のものぐさ処理を改良*6ver 0.9.6
2007年5月15日金曜日Katsumi Saito さんにソースコードを大改良していただいた。あわせて PukiWiki Plus! にも対応。一部 htmlspecialchars が抜けていたのを修正(メールフォーム由来の値ではないので危険度は低いと思われるが、ご利用中の方はアップデートを推奨します。)ver 0.9.8
2007年7月13日金曜日E_ALL 対応ver 0.9.9
2007年7月20日水曜日email をお問い合わせ項目にしていないときの挙動の修正。ver 1.0.0b

コメント

  • 文字化けしてしまいます。ver 0.94がダウンロードできないので,ver 0.92で使おうとしています。 -- aino310? 2007-03-02 (金) 05:10:01
    • ごめんなさい、0.94 もダウンロードできるようにしました。そういえばこいつは UTF-8 版しかないんですが、もしかして EUC ですか?? -- jidaikobo? 2007-03-02 (金) 06:46:48
      • EUCに変換して解決。お騒がせしました。 -- aino310? 2007-03-03 (土) 17:22:04
  • 便利に使えそうです
    • なぜか$notify_toを拾ってくれない。。ページ内に「admin_adrs ='hoge@huga.com'」を記入してみたらうまくいく、、でもなんかやだな。
      • function PKWKMAIL_prepare(63行目あたり)の最初に、global $notify_to;を一行入れてやらないといけないのかも……(動作未確認です)。 jidaikobo?
      • 上記”global $notify_to;”でページ内に書かなくでも大丈夫になりました!ありがとう! -- life-stu
    • EUC-JPで使用。(mbstring?無しで、mb-emulator.phpを使用)
      mb_convert_encodingで"auto"を"EUC-JP"に変更してメールの文字化けが解消しました。-- life-stu 2007-03-05 (月) 10:57:47
      • ご報告ありがとうございます。EUC の場合は明示しないといけないんですね。
  • UTF-8でも同様でした。(それ以前にpukiwiki.ini.phpの$notify_to宛に送信されるという説明が無くても皆様は理解しているのでしょうか)他に何点か気になった点を・・・option/radioの初期値設定をしても反映されない。readmeにあるフォーム部品サンプルをコピーしてテストしようとすると、行頭に半角スペースが挿入されて動作しない。同じく都道府県サンプルのoptionは改行を削除して1行で入力しないと動作しない&北海道が初期値になる。 -- sio? 2007-03-07 (水) 14:55:28
    • フィードバックありがとうございます。でも、ちょっとバタバタしてまして、なるべく近いうちに対応しますんで少々お待ちください。--jidaikobo?2007-03-08 (木) 11:28:28
    • $notify_to の件、readme 改善の件、ご指摘、反映できたと思います。でも、「UTF-8でも同様でした。」とのことですが、これはなんのことでしょう? あと、option/radioの初期値設定が反映されないとのことですが、こちらでは再現できませんでした。--jidaikobo?2007-03-09 (金) 10:41:11
  • このプラグインのサンプルってありませんか? -- 2007-05-15 (火) 12:56:20
    • 動作が見られるサンプルということですよね。すみませんが、いまのところ送信画面まで試してもらえるようなサンプルはありません。 --jidaikobo?2007-05-16 (水) 08:58:28
  • ファイル添付する機能を追加するのは、難しいですかねー? -- ハル? 2007-05-16 (水) 12:11:01
    • あー、どうなんでしょう。ふつうに mail 関数で送れるものなんですかね? 確約はできませんが、調べてみようと思います……。 --jidaikobo?2007-05-17 (木) 09:32:28
  • pukiwiki plus!の通常版(国際化版i18nでない方)では使えないのでしょうか? -- 2007-06-14 (木) 23:32:27
    • すみません、僕自身 plus! をつかってないのでわからないです。でも、plus! のプラグインのページでは、1.4.4 の標準プラグインが動くと書いてあるので、動くんじゃないでしょうか……?(基本的には文字列をヘネモネして mail() しているだけのプラグインなので) --jidaikobo?2007-06-15 (金) 06:06:01
  • 0.9.4では動くのですが,0.9.6以上では,「内容確認」を押すと,なぜかサイトのトップページに行ってしまい,入力内容の確認画面が出てきません。どうしたことでしょう? 0.9.5は試していません。 -- aino310? 2007-07-02 (月) 19:12:12
    • 動作報告に気づいていませんでした。0.9.8 でも同様ですか?すみません、「以降」と書いてくださってますね。近く確認しておきます。 --jidaikobo?2007-07-12 (木) 12:32:28
    • aino310さんご報告の件、動作確認してみましたが、うちでは問題なく動きます。あんまり関係ないと思いますが、0.9.9 をお試しください。 --jidaikobo?2007-07-13 (金) 09:08:28
      • メールアドレスを問い合わせ項目にしていないときには、挙動がおかしくなることを確認しました。1.0.0b で修正しています。 --jidaikobo?2007-07-20 (水) 14:05:30
  • ファイルをメールに添付して送ることができるメールフォームを探してます。 -- miki? 2007-07-07 (土) 13:59:07
    • いま合間々々に調べていますが、どうもメールのヘッダをどうにかしたらできそうではあるみたいですね。 --jidaikobo?2007-07-20 (水) 14:06:40

*1 読みにくかったので勝手に改行しちゃいました
*2 やー、やっぱり改行した方がよかったですかね。ありがとうございます。
*3 thx aino310
*4 thx sio
*5 thx life-stu
*6 どちらか -br にすると、両方 br になっていた (^^;

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2007-09-09 (日) 16:13:04 (4367d)