pkwkmail.inc.php†
サマリ | 確認画面のあるメールフォームを生成するプラグインです。 |
リビジョン | 1.0.0b |
対応バージョン | 1.4.7 |
投稿者 | jidaikobo |
投稿日 | |
最初に†
このプラグインには後継プラグイン「pkwkmail2.inc.php」があります。
このプラグインは?†
確認画面のあるメールフォームを生成するプラグインです。 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 | ご氏名 | text | 1 | | お名前 | (15) |
attr | 趣味 | checkbox | 1 | (野球,テニス,サッカー) | (テニス,サッカー) | |
最初に「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。
基本的に最新版の方がよいはずですが、検証用に過去バージョンを残しています。
pkwkmail 0.90(http://www.jidaikobo.com/pukiwiki/pkwkmail09.zip )
pkwkmail 0.91(http://www.jidaikobo.com/pukiwiki/pkwkmail091.zip )
pkwkmail 0.92(http://www.jidaikobo.com/pukiwiki/pkwkmail092.zip )
pkwkmail 0.94(http://www.jidaikobo.com/pukiwiki/pkwkmail094.zip )
pkwkmail 0.95(http://www.jidaikobo.com/pukiwiki/pkwkmail095.zip )
pkwkmail 0.96(http://www.jidaikobo.com/pukiwiki/pkwkmail096.zip )
pkwkmail 0.98(http://www.jidaikobo.com/pukiwiki/pkwkmail098.zip )
- pkwkmail 0.99(http://www.jidaikobo.com/pukiwiki/pkwkmail099.zip )
- pkwkmail 1.00b(http://www.jidaikobo.com/pukiwiki/pkwkmail100b.zip )
メッセージ類のカスタマイズ†
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 のものぐさ処理を改良*6。 | ver 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
- ごめんなさい、0.94 もダウンロードできるようにしました。そういえばこいつは UTF-8 版しかないんですが、もしかして EUC ですか?? -- jidaikobo
- 便利に使えそうです
- なぜか$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
- ご報告ありがとうございます。EUC の場合は明示しないといけないんですね。
- UTF-8でも同様でした。(それ以前にpukiwiki.ini.phpの$notify_to宛に送信されるという説明が無くても皆様は理解しているのでしょうか)他に何点か気になった点を・・・option/radioの初期値設定をしても反映されない。readmeにあるフォーム部品サンプルをコピーしてテストしようとすると、行頭に半角スペースが挿入されて動作しない。同じく都道府県サンプルのoptionは改行を削除して1行で入力しないと動作しない&北海道が初期値になる。 -- sio
- フィードバックありがとうございます。でも、ちょっとバタバタしてまして、なるべく近いうちに対応しますんで少々お待ちください。--jidaikobo
- $notify_to の件、readme 改善の件、ご指摘、反映できたと思います。でも、「UTF-8でも同様でした。」とのことですが、これはなんのことでしょう? あと、option/radioの初期値設定が反映されないとのことですが、こちらでは再現できませんでした。--jidaikobo
- このプラグインのサンプルってありませんか? --
- 動作が見られるサンプルということですよね。すみませんが、いまのところ送信画面まで試してもらえるようなサンプルはありません。 --jidaikobo
- pukiwiki plus!の通常版(国際化版i18nでない方)では使えないのでしょうか? --
- すみません、僕自身 plus! をつかってないのでわからないです。でも、plus! のプラグインのページでは、1.4.4 の標準プラグインが動くと書いてあるので、動くんじゃないでしょうか……?(基本的には文字列をヘネモネして mail() しているだけのプラグインなので) --jidaikobo
- 0.9.4では動くのですが,0.9.6以上では,「内容確認」を押すと,なぜかサイトのトップページに行ってしまい,入力内容の確認画面が出てきません。どうしたことでしょう? 0.9.5は試していません。 -- aino310
- 動作報告に気づいていませんでした。
0.9.8 でも同様ですか?すみません、「以降」と書いてくださってますね。近く確認しておきます。 --jidaikobo
- aino310さんご報告の件、動作確認してみましたが、うちでは問題なく動きます。あんまり関係ないと思いますが、0.9.9 をお試しください。 --jidaikobo
- メールアドレスを問い合わせ項目にしていないときには、挙動がおかしくなることを確認しました。1.0.0b で修正しています。 --jidaikobo
- UTF-8 1.4.7でメールフォームを生成のプラグインを探していたところ、すぐに発見することができましたので、1.00bを使わせていただいております。質問なのですが、文例における、ご氏名やふりがなの背景色やフォントサイズを変更することはできますか?また、pukiwiki.ini.phpの$notify_toを設定しても、admin_adrsを指定しても、メールが届きません。 -- saku
- 質問箱/255「更新時にメールで通知したいのですが」は見ましたか? --
- メール送信の件、たしかに確認すべきポイントがあるので、上記、お答えいただいた対応をご確認ください(反応をありがとうございます。ちょっとだけリンク文字列をいじらせてもらいました)。あとご質問のth項目の書式設定ですが、一括的に見栄えを調整するのであれば、スタイルシートを編集して調整できるとは思います。 -- jidaikobo &new([nodate]){date}: Invalid date string;
- 早速設置してみましたが、送信ボタンを押すと真っ白いページになりメールも送られませんでした。1.4.7を使用しているんですが、他にiniファイルなどでメール送信の設定は不要なのでしょうか。 -- ビギナー
- 1.4.7(EUC)環境です。送信すると「なんらかのエラーが発生したため、メールを送信できませんでした。」と表示されてしまいます。全バージョン試してみましたが同様でした。pukiwiki.ini.phpのメールに関する設定は出来ていると思います。(ページを更新するとちゃんとメールが届く為)原因として、何が考えられるでしょうか? --
マルチライン関係のトラブル†
- リビジョン1.0.0bが動作がしないので、教えてください。
環境は、PukiWiki1.4.7・PHP4.4.2・EUC で使っているのですが、
pukiwiki.ini.phpを
define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled
(中略)
$notify_to = 'hogehoge@hogehoge.com'; // To:
にして、
#pkwkmail{{
attr = 'ご氏名','text','1','','お名前','(15)'
attr = 'ふりがな','text','0','','おなまえ','(15)'
}}
と書くと、ページにはそのまま、
#pkwkmail{{ attr = 'ご氏名','text','1','','お名前','(15)' attr = 'ふりがな',... }}
と表示されます*7。
括弧を付けて
#pkwkmail(){{
attr = 'ご氏名','text','1','','お名前','(15)'
attr = 'ふりがな','text','0','','おなまえ','(15)'
}}
とすると、
Error message : 管理者宛メールアドレス($notify_to)を正しく設定して下さい。
と表示されます。
どこに原因があるのか教えていただけませんでしょうか?
- ver 0.9.9でも試してみましたが、状況は変わりませんでした。 --
- 私も ver 0.90まで試しましたが、全部上の方と結果は一緒です。ちなみに環境も一緒でPukiWiki1.4.7・PHP4.4.2・EUC です。EUC-JPに変換してから使ってます。 -- テント
- pkwkmail.inc.phpの変数妥当性チェック(221~223行目)をコメントアウトしたら・・・ --
ページ凍結されていません。危険なので、ページを凍結してください。
default_messageを設定してください。
フォーム
以下フォームに必要事項をご記入願います。入力必須項目について、ご記入漏れのないようにお願いいたします。
「内容確認」
attr = 'ご氏名','text','1','','お名前','(15)' attr = 'ふりがな','text',... }}
- となりました*8。う~ん、何が悪いんだ??? --
- お返事遅くなりました。ご報告を受け、EUC に変換して、手元に新しい PukiWiki をダウンロードして試してみましたが、うちではうまく動きます。そのまま表示されるというのは、もしかして、プラグインの先頭に半角スペースが入っていたりしませんか? ちなみに半角パーレン(括弧)を追加するのは、いちおう convert の関数が走るだけで、あまり意味がないと思います……。 -- jidaikobo &new([nodate]){date}: Invalid date string;
- 確認しましたが、プラグインの先頭に半角スペースは入っていませんでした。 --
#pkwkmail{{
attr = 'ご氏名','text','1','','お名前','(15)'
attr = 'ふりがな','text','0','','おなまえ','(15)'
}}
と書くと、
#pkwkmail{{ attr = 'ご氏名','text','1','','お名前','(15)' attr = 'ふりがな','text','0','','おなまえ','(15)' }}
こんな風に*9*10そのまま1行のテキストとして表示されてしまいます。
- #pkwkmailだけなプラグインとして認識されているようですが、 #pkwkmail{{ }}として後ろにフォーム部品を加えるとプラグインとして認識されずにそのまま表示されてしまいます。 -- テント
- なにぶんにも再現できないとどうしようもないのですが、pkwkmail 以外のマルチラインプラグイン(enull.inc.php など)は普通に使えるんでしょうか? -- jidaikobo
- enull.inc.php、今から試してみます。 --
- enull.inc.phpでも同じ現象が発生しました。半角パーレン(括弧)無しだと、テキストで1行になって表示、
半角パーレン(括弧)を付けると、{{ の後ろだけが表示されました。 --
- 申し訳ありません。自己完結しました。
原因はpukiwiki.ini.php内でPKWKEXP_DISABLE_MULTILINE_PLUGIN_HACKの綴りが欠けて、マルチラインが有効になってませんでした。本当に申し訳ございませんでした。 --
- 申し訳ありません。私はマルチラインを有効にしていませんでした。解決しました。有難う御座いました。 -- テント
- 解決してよかったですね。このページ冒頭の文章で、マルチラインプラグインであることを強調しておきました。 -- jidaikobo &new([nodate]){date}: Invalid date string;
ファイル添付について†
- ファイル添付する機能を追加するのは、難しいですかねー? -- ハル
- あー、どうなんでしょう。ふつうに mail 関数で送れるものなんですかね? 確約はできませんが、調べてみようと思います……。 --jidaikobo
- ファイルをメールに添付して送ることができるメールフォームを探してます。 -- miki
- いま合間々々に調べていますが、どうもメールのヘッダをどうにかしたらできそうではあるみたいですね。 --jidaikobo
- ファイル添付についていろいろ調べてみました。……が、かなりややこしいんですね。pkwkmail の場合、送信前に確認画面を経由するのですが、その手前のフォームで $_FILES にアップしても、ここでいったんリクエストが完了してしまうので、 $_FILES の値がメール送信画面まで持ってゆけません。
では、名前をつけて CACHE ディレクトリあたりにいったん保存すれば、とか思ったんですが、これだと何とかなりそうなものの、たまたま同時に同じ名前の添付ファイルを送ろうとした複数の人のファイルが、間違って送信される可能性が出てしまうので、NG というかんじです。それならばセッションあたりをうまく使うと、送信者にひも付けして間違わずにファイル送信できるのかもしれませんが、せっかく PukiWiki 本体がセッションに依存していないのに、それを使うのも……ということで、力及ばず残念ですが、無期限ペンディングさせてください…… :-( -- jidaikobo &new([nodate]){date}: Invalid date string;
- 引き続き考えてみたんですが、もしかすると、確認画面まで、ずっと $_FILES で持っていかなくてもいいんですよね。だったら、やりようによってはできるのかも……? -- jidaikobo &new([nodate]){date}: Invalid date string;
- pkwkmail2.inc.php に添付ファイルを実装してみました。 -- jidaikobo &new([nodate]){date}: Invalid date string;