CGIプログラミング(2) - フォームからデータを読み込む

ここでは、CGIにデータを渡す際の様子について調べてみる。 前にCGIには環境変数と標準入力を使ってデータが渡されていることを述べた。 まずは、以下のCGIを使って、CGIに渡されている環境変数と標準入力が どのようなものかを確かめてみよ。
  • printenv.cgi - CGIの環境変数と標準入力の値を表示する
    このCGIのプログラムは以下の通り。Perlで書かれている。
    #!/usr/bin/env perl
    print "Content-Type:text/html; charset=UTF-8\n\n";
    print "<html><body>\n";
    print "<h3>環境変数</h3><table border=1>\n";
    print "<tr><th>変数名</th><th>値</th></tr>";
    foreach(sort keys %ENV) {
        print "<tr><td>$_</td><td>$ENV{$_}</td></tr>\n";
    }
    print "</table>";
    print "<h3>標準入力</h3><table border=1>\n";
    while(<>) {
        print "<tr><td>$_</td></tr>\n";
    }
    print "</table>";
    print "</body></html>";
    
  • 上のCGIにパラメータ(tuis=100)を渡してみる。
  • GETメソッドを使用
    このフォームのHTMLは以下の通り。
    <form method=get action="printenv.cgi">
    <input type=text size=4 name="tuis" value="100">
    <input type=submit value="上のCGIにフォームからパラメータを渡してみる">
    </form>
    
    POSTメソッドを使用
    このフォームのHTMLは以下の通り。
    <form method=post action="printenv.cgi">
    <input type=text size=4 name="tuis" value="100">
    <input type=submit value="上のCGIにフォームからパラメータを渡してみる">
    </form>
    
  • 課題

    課題1 上記 printenv.cgi をGETメソッド、POSTメソッドを使って実行した場合の違いを説明せよ。

    課題2 id と name という2つのコントロールを設けたフォームを作り、printenv.cgiを 実行するようにせよ。そして、それらのコントロールがGETメソッドとPOSTメソッドでどのように渡されるかを説明せよ。

    課題3 「formの作成の課題1」で作成したフォームのアクションを printenv.cgiに変更し、コントロールの内容がどのように渡されるかを書け。

    課題4 課題3の内容を変更し、 GETメソッドでprintenv.cgiを呼び出すようにせよ。 そして、コントロールの内容がどのように渡されるかを書け。


    東京情報大学情報システム学科
    大見 嘉弘(Yoshihiro OHMI)