送信フォームの作成のTips(ヒント)
CGIで動的にフォームメールHTMLを出力してフォーム送信を行う場合の設定
- マスター管理者の「初期設定」メニューの使用するフォームHTMLには CGI がHTMLファイルを出力するパスのファイル名を指定しておきます。(例:/home/docs/aaa/form.html)
この場合は _セッションID を次のように挿入したフォームHTMLファイルから送信すると解釈されます。
/home/docs/aaa/form_セッションID.html
- CGI でフォームをブラウザに出力すると同時に上記の初期設定で指定したディレクトリに保存します。
保存するファイル名は、「初期設定」メニューの使用するフォームHTMLに指定したファイル名に _セッションID を挿入したファイル名にしてください。
出力するフォームには次のようにそのフォーム固有のユニークなセッションIDをセットして下さい。(順番に注意)
<form method=post action="https://www.xxx.co.jp/cgi-bin/formmail/formmail_pro.cgi">
<input type=hidden name=_check value="判定">
<input type=hidden name=_session value="セッションID">
<input type=hidden name=_id value="フォームID">
<input type=hidden name=_imode value="1">(携帯用のフォームの場合)
入力する項目〜
</form>
セッションIDは以下のプログラムの例のようにユニークなIDを生成して下さい。
# (セッションIDに月日時分秒+0〜100の乱数を使用する場合の例)
@date=localtime(time);
srand(time|$$);
$session_id=sprintf("%02d%02d%02d%02d%02d",$date[4]+1,$date[3],$date[2],$date[1],$date[0]).(int(rand(100)));
動的にCGIでフォームメールHTMLを出力してフォーム送信を行う場合にはその時の一時フォームファイルを作成し処理します。
送信前の確認画面で実際に送信した場合は一時フォームファイルはその時点で削除されます。
しかし、送信が行われなかった場合は一時フォームファイルは削除されず残ってしまいます、そのため1日の最初に送信が行われた時に残った一時フォームファイルを削除するようになっています。
フォーム送信の度に固定項目を再入力してもらうのを回避する方法
- フォーム送信の度に固定項目を再入力してもらうのを回避するため送信時に固定項目をクッキーに保存しておくことができます。
クッキーに保存しておく項目はフォームHTMLの入力項目のチェックオプションに cookie を指定します。
例:<TD><input type=text name="住所(ch//cookie)">
- クッキーを反映させて送信フォームに表示させるには formmail_display.cgi を以下のように呼び出すか、リンク先に指定します。
https://www.xxxx.co.jp/cgi-bin/formmail/formmail_display.cgi?id:test
https://www.xxxx.co.jp の部分とCGI呼び出しのパスはあなたのサーバーのURLに置き換えてください。
(引数)id: の後にフォームのIDを指定します。携帯電話用フォームは +i を続けて指定します。
フォームメールHTMLの入力項目を javascript で操作する場合の設定
- フォームメールHTMLの入力項目を javascript で操作する場合、name="" に日本語名称を使用するとうまく動作しない場合があります。
また、アルファベットの名前を使用しても名前に (チェックオプション) をつけるとうまく動作しない場合があります。
このような場合は、 javascript で操作するinput項目には namex="日本語名称(オプション)" を追加して指定します。
例:<input name="use_java" size="10" namex="日本語名称(ch)">
この例では、javascript で操作するinput項目名に use_java を使い、表示名、データ名には日本語名称を使っています。また、この入力項目のチェックオプションは (ch) を指定しています。
英語版フォームのHTMLを作成する場合の注意点
- フォームIDタグの前に以下の英語対応のタグを記述してください。
<input type=hidden name=_english value="on">
<input type=hidden name=_id value="test">
- 英語フォーム用にスーパバイザー管理者メニューからフォームを追加登録してください。
SSLを使って送信する
- 独自ドメインでSSLをドメインに対して使用できる場合、つまりHTML呼び出しもCGIの実行も同じURLの https:// で指定できる場合はフォームHTMLを呼び出すときに https:// で呼び出します。
そうすれば続くCGIもSSLが掛かった状態で呼び出されるはずです。
- 共用サーバーなどで共用のSSLを使用する場合はSSLの呼び出しがホームページのドメイン名と違う指定をしなければなりません。
このような場合はフォームHTMLの <form 〜の action="" のCGI指定を https://〜 でフルに記述してください。
また、設定ファイル formmail_set.pl の 10行目 $cgi2='formmail_pro.cgi'; も同様に https://〜 でフルに記述してください。
例:https://www.xxxx.ne.jp/yyyy/cgi-bin/formmail/formmail_pro.cgi
この設定で画像の表示やリンクのパスが合わなくなり画像が表示できない、リンクがうまく繋がらない場合はパスの指定を相対パスから絶対パスで書き直すか <base href="https://〜> を記述して調整してください。
うまく動作しない場合は、<form 〜の action="" のCGI指定と<base href="https://〜>の組み合わせを調整してください。
- 「初期設定」の送信後に表示するテキストに https:// で始まるURLを指定している場合、送信後にこのページを表示しようとするときにブラウザから警告が出る場合があります。
この警告を出したくない場合は表示するテキストに https://〜 で始まるURLを指定するか、テキストをタグを含めてHTMLソースを記述します。
複数のフォームに分割して送信
- 入力項目が多くて1回で送信するのが困難な場合などで複数のフォームに分割して送信することができます。
- フォームジェネレータで作成する場合の設定について
「入力タイプ」を選択するときにこれ以降の項目を次の頁で入力させたいところで「入力タイプ」に「フォーム分割」を選択します。
分割は複数頁での分割が可能です。
項目入力欄が足らなくなったら一度、保存して生成して終了し再度編集すると項目入力欄が追加されます。
最初の頁の保存名が form.html なら次の頁からは form2.html、form3.html〜のファイル名で生成されます。
どの送信フォームに使って送信するかは「初期設定」の一番上の送信フォームを指定するところで最初の送信フォーム、form.html を指定します。
送信フォームを何回かに分けて送信する場合の設定について
最初の送信フォーム (form.html)
<form method="post" action="/cgi-bin/formmail/formmail_pro.cgi">
<input type="hidden" name="_check" value="判定">
2番目のフォームに続くことを指定します。(最後のフォームでは不要です、2から順番に付けていきます)
最初の送信フォームは form.html(この記述のフォーム) 2番目の送信フォームは form2.html になります。
標準のディレクトリ以外の場所のファイルを指定する場合はフルパスで指定します。
<input type="hidden" name="_continue" value="2">
<input type="hidden" name="_id" value="test">
<input type="text" name="名前(ch//name)" size=20>
〜 <input type="submit" value="次の入力へ">
2番目の送信フォーム (form2.html)
<form method="post" action="/cgi-bin/formmail/formmail_pro.cgi">
<input type="hidden" name="_check" value="判定">
<input type="hidden" name="_id" value="test">
1番目の送信フォームの入力項目は全て2番目のフォームの中に埋め込んでください。( hidden項目で構いません、hidden項目で埋め込んだ場合はオプションに HIDISP を付けておくと最終の確認画面では表示することができます)
<input type="hidden" name="名前(HIDISP)" value="" size=20>
〜
2番目の送信フォームでの入力項目
<input type="text" name="住所" size=20>
〜 <input type="submit" value="確認画面へ">
Tips 項目名(オプション( ) を省いた名前)を「%%」で囲って記述すると前の頁で入力した値を表示させることができます。
前の頁での入力値=%%名前%%
※分割送信を使う場合は「初期設定」の「入力に不備があった時のエラー表示画面」は必ず「フォーム形式」を選択してください。
|
使用講習会、説明会をご指定の場所で開催させていただきます
本サイトの CGI は高機能で何でもできますが、高機能のため使用方法を完全に理解するためには説明を受けた方が解りやすいと思います。京阪神奈の制作会社様には使用講習会、説明会をご指定の場所で開催させていただきます。最下段のメールアドレスまでお問い合わせ下さい。(場所が京阪神奈以外の場合は実費交通費が必要です)
インストール、CGI制作の請け負い
本サイトのプログラムは今までに
CGI をインストールされた方なら簡単にインストールしていただけますが、設定も含めたインストール、サイト構築作業、CGI制作を請け負うことも可能です。
お問い合わせページからご連絡ください。
GOiGOi Projectではフォームメール、WhatsNew(汎用データベース)、ページ自動生成、ページ更新、空き情報・予約など、ホームページを管理、運営する上でどうしても必要になってくるCGIをプロ仕様で提供しています。全てのプログラムは汎用CGIとして開発されていてどのようなサイトでもご使用いただけます。また、CGI制作も承ります。