フォーム <FORM> を使う





フォームは、入力の仕掛けの記述の最初と最後を示し、何をするかをも示します。
フォームは、TABLE タグなどと違って、form の中にform の記述(これをネストという)が出来ません。
逆に、フォームは、他のどのタグのブロックがあっても、それらに関係なく、開始と終了の記述が出来ます。
なんて、面白いタグなのでしょう。

下記は、そのフォームの使用例なども含めたリファレンスです。CGIを中心に記述したつもりです。



フォーム   FORM ACTION="http://ww.zzz.co.jp/scripts/abc.exe" method="get"
  機 能フォームの開始と終了を指定する。
設定例<FORM ACTION="http://ww.zzz.co.jp/scripts/abc.exe" method="get">
CGI取得
<FORM>〜</FORM> は、「フォーム」といって、ユーザに値の入力を促したり、 選択したりして、それをサーバ側に送り返すデータをいれてもらう範囲です。
CGIでの機能は、
    ACTION= で起動するプログラムを指定し、
    METHOD= でCGIプログラムに渡すデータの「受け渡し方法」を決定し、
    ENCTYPE=でエンコード/デコード方法を指定
することです。

    METHOD で使用できる2つの値
     備考
    1GET CGIから見ると環境変数 QUERY_STRING で値が取れる。
    サイズの大きなデータは送ることが出来ない。
    2POST CGIから見ると標準入力から値が取れる。
    サイズの大きなデータでも送ることが出来る。

    ENCTYPE で使用できる3つの値
     備考
    1application/x-www-form-urlencoded ほとんどがコレ。 ディフォルトです。
    2multipart/form-data ファイルをアップロードする目的で使用する。
    3text/plain メールの時に使用する。

他、CGIには関係が薄いが、FORMには「target」という属性もある。 これは、対象フレームの名前を示す。
    HTMLブラウザの内容は、サーバから何らかの操作をして表示するものではなく、クライアントからの操作で初めてサーバが反応して表示するデータを送ります。
    また、1つのマシンのディスプレイに、いくつものHTMLブラウザの画面を表示できます。
    サーバ側の CGI は、起動されて標準出力と呼ばれるところに向かってデータを吐き出します。
    このことは、ブラウザ(クライアント)側のどのフレームからの要求かはサーバ側のCGIでは、わからないことを示します。 この属性は、その対象となるフレームを指定するわけで、CGI と関係ないわけではないが、薄い関係です。

    TARGET で使用できる値
     備考
    1_self 現在のウィンドウ。 ディフォルトです。
    2_top トップウィンドウ
    3_parent親ウィンドウ。
    4_blank 新しいウィンドウ。
    5* ユーザー定義のウィンドウ。
    target="formX1" その名(formX1)のウィンドウが対象 。



 【例】scripts/zzz.exe を起動する
 <form action="http://zzz.or.jp/scripts/zzz.exe" method="post">
 お名前:<input type="text" size=30 name="name"><br>
 <input type="radio" name="seibetu" value="man">男性<br>
 <input type="radio" name="seibetu" value="woman">女性<br>
 <input type="submit"value="送信">
 <input type="reset"value="取消">
 </form>
 
 お名前:
 男性
 女性
     



 【蛇足な例】こんなだとメールを送ってしまう

 <form action="mailto:zzz@zzz.or.jp" method="post">
 お名前:<input type="text" size=30 name="name"><br>
 <input type="radio" name="seibetu" value="man">男性<br>
 <input type="radio" name="seibetu" value="woman">女性<br>
 <textarea name="textarea2" cols="40" rows="3"></textarea>
 <input type="submit" value="送信">
 <input type="reset" value="取消">
 </form>
 
 お名前:
 男性
 女性
 
     

    実際にテストするとIE5.0 では、メールのウィンドウ(Outlook Express)が開きます。
    Netscape(Ver4.7) では、そのまま送信されました。
    Netscape(Ver4.7) の場合、以下のようなテストデータを送信すると
       
       お名前:
       男性
       女性
       
           
    form のデータは、
      name=%8ER%93c%89%D4%8Eq&textarea2=%8F%AC%82%B3%82%A2%82%AF%82%C7%97%CD%8E%9D%82%BF%82%C5%82%B7%81B%0D%0A%82%BB%82%CC%8F%E3%94%FC%90l%82%C5%82%B7%81B
    という形式で添付ファイルとして送られてきました。 この形式は、デフォルトの ENCTYPE=application/x-www-form-urlencoded が採用されたためでENCTYPE=txet/plain を付加するともう少し、ましな形式になります。



 【蛇足な例】こんなだとアンカーの代わりになる

 <form action="../default.htm" method="post">
 <input type="submit" value="トップページに戻る">
 </form>