[もくじへトップページへ前ページへ次ページへ]

Sunday, 07-Jan-2001 01:22:11 JST に更新

                                   

 9.フォームメール

 フォームメールというのは、当HPでもあちこちに置いてありますが、フォー

 ムに入力されたデータ(名前、メールアドレス、感想など)を、メールで送信

 するものです。 

 ここでは、次のフォームを作成した後、入力されたデータをメール送信するプ

 ログラムの作成について解説します。

  • フォーム  

 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

 感想をどうぞ

 お名前(ハンドル可)
 

 メールアドレス(半角英数)
 

 感 想
 

  

 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−



 このフォーム部分のソースは次のようになっています。なお、説明のために、

 部分的に調整してあります。スペースや改行はブラウザで表示させながら適宜

 変えてください。IE付属のFrontPage Expressを使うと簡単に作成できます。





 <form action="http://www.minc.ne.jp/~ryokan/
    cgi-bin/lecture/formml.cgi" method="POST">

  <input type="hidden" name="
subject" value="感想メール"><br>

  <font face="MS ゴシック">感想をどうぞ</font><p>

  <font face="MS ゴシック">お名前(ハンドル可)</font><br>

  <input type="text" size="30" name="
name"><p>

  <font face="MS ゴシック">メールアドレス(半角英数)</font><br>

  <input type="text" size="30" name="
mail"><p>

  <font face="MS ゴシック">感 想</font><br>

  <textarea name="
message" rows="4" cols="50"></textarea><p>

  <input type="submit" value="送信">
    <input type="reset" value="リセット">

 </form>





 赤字の部分は、プログラムの中にスペルミスのないように記述しなければなり

 ません。

 このフォームにデータを入力後送信ボタンを押すと、データはURLエンコー

 ドされ、次のような文字列がform action=・・・で指定されたCGIプログラ

 ムに渡されます。

  subject=%A0%52%32%B4%51&name=%C5%D2mail=ryokan@po.minc.ne.jp

  &message=%ED%53・・・・・・・

 ご覧のとおり、半角英数はそのままですが、2バイト文字はエンコードされて

 います。また、「=」や「&」でつながっています。したがって、この文字列を、

 次のプログラムでデコードする必要があるのです。





  • プログラム

 次のようなプログラム(formml.cgi)を作成しました。コメントを入れてあり

 ますので、スクロールボタンを操作しながら解読してください。

 





 プログラムの流れは、概略次のようになります。



    ------------------------------------------------------------
     開始

     フォームの送信ボタンが押されたとき、このプログラムが実行
     されます。先頭行はPerlへのパスを書きます。
     先頭行の「#」はコメントにはなりません。
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     日本語コード変換プログラム(jcode.pl)を取り込む
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     変数の初期設定(メールの送信先アドレスの指定など)
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     送信時刻の取得(
5.日付・時刻で説明済み)
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     フォームデータの受信

     フォームからのデータの送信方法は、POSTとGETの2通りが
     あります。受信方法がそれぞれ異なるので、ここで選択します。
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     受信データの編集

     受信されたデータはURLエンコードされていますので、この
     ままでは読めません。ここでデコード(解読)します。
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     入力データのエラー検出

     ここは、もっと強力にしなければいけませんが、説明を簡単に
     するために、空白のチェックのみ行っています。この他には、
     例えば、メールアドレスが半角になっているか、「@」が入って
     いるかなどのチェックが考えられます。
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     メール送信

     これまでの送信はプログラムへの送信でしたが、今度はそれを
     プログラムがメール送信することになります。
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     送信後の画面表示

     送信後のHTMLを表示します。送信のお礼など表示するよう
     にします。
    ------------------------------------------------------------

              ↓

    ------------------------------------------------------------
     終了(exit;)
    ------------------------------------------------------------





 プログラムを自分でカスタマイズして使う場合は、次をクリックして表示させ

 formml.txtはformml.cgi、jcode.txtはjcode.plという名前で保存してくださ

 い。( )内はパーミッションです。

   formml.txt → formml.cgi755

   jcode.txt  → jcode.pl644)※Kazumasa Utashiroさん開発

 必ずテキストモード(アスキーモード)でアップロードしてください。



  テスト実行

 上記フォームに入力して、送信ボタンをクリックしてください。



  うまく動きましたか?

  動かないときは、サポート掲示板へどうぞ。


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

[もくじへトップページへ前ページへ次ページへ]