CGIとは

  1. 目的

    CGIはCommon Gateway Interface の略です。
     cgiは標準の html には組込まれていない機能を実現したいときに利用され、ホームページのカウンタや、アンケート調査、掲示板、などに利用されます。CGIはかなり強力な機能を持つため、セキュリティなどの問題で、CGIを利用できるサーバーは限定されています。

  2. cgiの仕組み


    1. cgi の仕組み

      webサーバーはブラウザから cgi の実行要求があると、ブラウザからの情報をパラメータとして、cgi プログラムを起動します。cgi は処理結果よりhtml記述を作成し、webサーバーに返します。 webサーバーはこのページ記述を cgi 要求の応答としてブラウザに返します。結果として、cgiプログラムを利用して、ブラウザからの情報により動的なページを生成・表示することができます。


  3. FORMタグ


    1. FORMタグ

      FORMタグはブラウザで利用できるGUI部品です。このタグを利用すると、ブラウザから入力されたデータをパラメータとして、サーバー経由でCGIを起動すことができます。
       以下に例を示します。
       <INPUT TYPE="text" NAME="NAME" SIZE=10>
      は1行の文字入力が可能で、その文字列の名前をNAMEとします。
        <FORM METHOD=GET ACTION="../cgi-bin/query.cgi">
           名前:  <INPUT TYPE="text" NAME="NAME" SIZE=10>
           E-Mail:<INPUT TYPE="text" NAME="MAIL" SIZE=20>
          <INPUT TYPE="submit" VALUE="送信">
        </FORM>
      FORM タグには、METHOD と ACTION の二つのパラメータが設定できます。METHOD には、GET または POST が設定可能で、後で説明しますが、パラメータの設定方法が変化します。ACTION は呼び出す cgi プログラムを指定します。このプログラムは、サーバー側に配置しておく必要があります。

    2. その他のFORM用入力タグ


      1. その他の入力
        FORMタグには、文字入力以外に、メニュー選択やボタンによる選択形式があります。

      2. 複数行入力
        複数の行が入力できます。colsで行の文字数、rowで行数を指定します。改行入力が可能です。
              <textarea name="message" cols="60" rows="8"></textarea>
              


      3. メニュー選択
        複数の項目を設定しておき、選択する方法です。name=option value が出力されます。
        <select name="etc1">
          <option value="">性別
          <option value="男性">男 性<option value="女性">女性
        </select> 

      4. ラジオボタン
        複数の項目のどれか一つを選択します。リストと組み合わせた例を示します。選択された項目の name=value が出力されます。
        <UL>
          <LI><INPUT type="radio" checked name="r1" value="1"> 1年生
          <LI><INPUT type="radio" name="1" value="r2">2年生
          <LI><INPUT type="radio" name="1" value="r3">3年生
          <LI><INPUT type="radio" name="1" value="r4">4年生
        </UL>

      5. チェックボタン
        複数の項目を選択できます。選択された項目の name=value が出力されます。

        <UL>
          <LI><INPUT type="checkbox" name="c2" value="1"> デスクトップ
          <LI><INPUT type="checkbox" name="c2" value="2"> ノート型
          <LI><INPUT type="checkbox" name="c2" value="3"> 携帯型
          <LI><INPUT type="checkbox" name="c2" value="4"> 携帯電話
        </UL>

    3. FORMタグの値の形式

       FORMタグで設定した値は、name=value の形式で渡されます。例えば、テキスト入力用のタグ
           <INPUT TYPE="text" NAME="name1" SIZE=10> 
      で、abcと入力すると、 "name1=abc" が cgi に渡されます。この場合 value は入力された文字になります。また、チェックボタンのタグ
           <INPUT type="checkbox" name="c2" value="2"> 
      で、このボタンがチェックされると、 c2=2 がcgiに渡されます。valueは INPUTタグで value= で設定されている値 となります。FORMタグで複数の INPUT タグが指定されている場合、これらの値が & で結合された文字列が渡されます。この例の場合、name1=abc&c2=2 の文字列が、cgiに渡されます。

    4. FORMタグの値の渡し方

       FORMタグの値は、タグの METHOD で指定した方法により cgi に渡されます。GETの場合は、環境変数 の 'QUERY_STRING' に引き渡されます。POSTの場合、cgi プログラムの標準入力装置に渡されます。

  4. WindowsでのCGI開発環境


    1. windows版のwebサーバー

      CGIの設定を行ったwebサーバーとPerlの実行環境が必要です。windowsでもフリーで公開されているapacheを組み込めば、ある程度のCGIの実行が可能です。ただし、メールやFTPなどの機能の実行はできません。

    2. PerlによるCGI

       小規模なCGI処理にはよくPerl言語が利用されます。多くのCGIの例が公開されており、CGIの作成が比較的容易です。ここでは、PerlによるCGIの作成例を紹介します。Perl言語については、こちらを参照して下さい。
    3. Perlの実行

      Perlの実行環境も無償で組み込むことができます。