フォーム/html作成の注意事項
formタグについて
フォームは、<form action=〜>で指定する、データを渡すスクリプトへのURLが間違っていない限り、基本的にはまったく自由にHTMLで記述してください。<input>タグ、<select>タグ、<textarea>タグなど、<form></form>の間に書けるフォーム用のすべてのタグが使用可能です。送信するデータが多い場合は method=postにすることをおすすめします。
ファイルのアップロード機能をお使いの場合
ファイルのアップロード機能をお使いの場合は、formタグ中に、
"enctype=multipart/form-data"
の記述を忘れないでください。この記述がないと、ファイルをサーバへ転送できません。また、フォーム中に設定した type=fileの input タグの name 属性を
(8-b)の「添付ファイル指定欄名」(@ATTACH_FIELDNAME)
に指定しておく必要があります(入力条件設定ツールを使うと楽に指定できます)。
項目名(name属性)の命名について
項目名(name属性)は2バイト文字(日本語)を含めて、自由に設定できます。ただし、半角スペースを含めないでください。
設定例
<input type=radio name="性別" value="男性">男性
<input type=radio name="性別" value="女性">女性
住所:<input name="address" size=50>
感想をどうぞ:<textarea name="感想" cols=60 rows=12></textarea>
ただし、以下に挙げる文字列はシステム予約語ですので、項目名として使用できません(使用しても無視されます)。予約語はすべて大文字ですので、小文字の単語であれば問題なく使えます(大文字小文字は区別されます)。
ALINK ATTACH_EXT ATTACH_FIELDNAME ATTACH_SIZE_MAX ATTACH_TSIZE_MAX
AUTO_REPLY BACKGROUND BGCOLOR BLANK_STR CONF CONFIRM_FLAG COMFIRM_FORCED
CONFIRM_TMPL DENY_DUPL_SEND ENCODING ENVELOPE_ADDR ERROR_FLAG ERROR_TMPL
EVAL_COMMAND EVAL_COMMAND2 FIELD_SEPARATOR FILE_OUTPUT FORMAT LINK
MAIL_FORMAT_TYPE MARK NEWLINE_REPLACE OFT OUTPUT_FIELDS OUTPUT_FILENAME
OUTPUT_SEPARATOR REPLY_FORMAT REPLY_MAIL_FORMAT_TYPE REPLY_MARK REPLY_OFT
REPLY_SENDFROM REPLY_SEPR REPLY_SUBJECT SEND_FORCED SENDFROM SENDMAIL SENDTO
SEPR SUBJECT TEMP TEMP_DIR TEXT THANKS THANKS_FLAG VLINK
なお、v0.54より、name属性の文字列とは別に、表示用の別名を設定できるようになりました。これは、名前を固定しなくてはならない name=EMAILや、javascriptを組みたいときなど、フィールド名が日本語だと不都合な場合に、name属性を半角英数字で指定しておいて、別名を日本語にすることで、エラーメッセージや、確認画面、送信メールに表示される項目名に反映させることができます。
※別名の設定は、入力条件設定ツール(v0.54用)で簡単に行うことができます。
複数フォームを扱う場合
設定ファイルを複数個用意してフォームによって使い分ける場合は、以下のタグで設定ファイルを指定します。
<input type=hidden name=CONF value="設定ファイル名">
ここで指定するファイル名は、f_mailer.cgi を設置しているディレクトリを起点とした相対パスか、サーバ上の絶対パスで指定してください。ファイル名のみを指定した場合は同一ディレクトリに置いてください。
使用する設定ファイルが、f_mailer.cgi と同一ディレクトリの f_mailer_conf.pl の場合には、このタグを省略することができます。
このタグを同じフォーム内に2つ以上指定すると動作しませんのでご注意ください。
フォームで入力したメールアドレスを届くメールの送信元にするには
フォームに入力してもらった送信元のE-mailアドレスを、届くメールのFromヘッダにするには、フォームのname属性を EMAILとしてください。自動返信メール機能を使う場合は、この入力欄が必須となります。
メールアドレス : <input name=EMAIL size=40>
フォームhtmlの文字コードについて
フォームのhtmlはできるだけ シフトJIS コードで作成してください。それ以外の文字コードのhtmlを使用する場合は、フォーム内に
<input type=hidden name=GETCODE value="日本語文字列">
というタグを追加してください。このタグのvalueの値をjcode.plで判定した文字コードを、フォーム全体の文字コードとみなして処理をします。このタグが含まれないフォームを使用した場合、常にシフトJISとみなして文字コード変換処理をしませんのでご注意ください。
確認画面を出すかどうか
入力フォームを送信する前に確認画面を出すかどうかを、そのつど送信者に選ばせることができます。
(3)CONFIRM_FLAGの値を1または2に設定(確認モード)しているときに、name=SEND_FORCEDであるタグをフォームに含め、送信者がチェックを入れると、確認を省略して直接送信されます。
<input type=checkbox name=SEND_FORCED value="1" checked>確認画面を出さずに直接送信
逆に、(3)CONFIRM_FLAGの値を0に設定(直接送信モード)しているときに、name=CONFIRM_FORCEDであるタグをフォームに含め、送信者がチェックを入れると、確認モードとなります。
<input type=checkbox name=CONFIRM_FORCED value="1" checked>確認画面を出す
テンプレートファイル内の埋め込み文字列について
エラーページおよび確認画面ページのテンプレートファイル(error.htmlおよびconfirm.html)のサンプルをご覧いただくと分かりますが、##CREDIT##という文字列があります。これは当スクリプトの著作権表示に置き換わりますので、このままにしていただければ、将来 f_mailer.cgi のバージョンアップ時にもそのまま変更せずにお使いいただけます。また、エラーページhtml中にある ##errmsg##は、エラーメッセージに置き換えるための印ですので、必ず含めてください。
その他の注意事項
v0.5より、フォームデータのデコードおよびファイルアップロードデータの処理に、Perl標準モジュールである CGI.pm を使用しています。たいていのサーバでは使えると思いますが、一部の「わざわざモジュールを使えなくしている」プロバイダでは、お使いになれない場合があります。
ファイル書き出し時に、複数の入力データがあるフィールド(name属性)のデータは、「半角スペース区切り」で格納します。データ中に半角スペースがあると厳密にいえば問題が出ますが、当面の間仕様とさせていただきます。