$2 ブラウザからのデータの取得

2-2 リンクによるデータ取得

CGIへのデータ送信となると、HTMLのフォームを利用するのが一般的ですが、 普通のリンクとして使うこともできます。
具体的に、データも送信するリンクの書き方は、

<A HREF="ex2.cgi?Hello">CGIの例2</A>

となります。これで「ex2.cgi」という名前のCGIファイルに、「Hello」というデータが送られます。 基本は「CGIファイル名?データ」と、? の後にデータを加えた形になります。
注意:実際には、リンクに書ける文字には制限があるので、例えば、 空白や記号が入った文や、日本語をそのまま送ることはできません。

そして、データを受け取るCGIプログラムは次のようになります。

#! /usr/bin/perl
print "Content-type: text/html\n\n";

$Data = $ENV{'QUERY_STRING'};
print "$Data";

この4行目の「$ENV{'QUERY_STRING'}」という変数にデータが入ってます。 正確には、上のリンクで「?」の後に書かれた文字列がそのまま入ってます。 あとは、この変数をなんらか処理すれば良いわけです。
注意:この例では、データをそのまま表示してますが、こういうのは危険で全く悪い例です。

これだけでは、データの変更も出来ないし意味がなさそうですが、そうでもありません。
例えば、商品カタログリストから、各商品を表示するようなCGIの場合、 ひとつのCGIに商品コードだけをデータとして送れば十分ですから、プログラムが簡単にできます。
こんな感じです(プログラムの内容は省略します)。

商品リスト
はるか人形
みちる人形

数十個くらいまでなら個別にページを作って対応できるでしょうけど、 数百個、数千個とかになったら、データから検索して表示したほうが管理しやすいと思います。

次のような簡単なゲームも作れます(プログラム内容は省略します)。

数を選ぶゲーム

Next: 2-3 フォームからのデータ取得 その1

Previous: 2-1 データ取得の注意

Contents


Foundation of CGI Page

春風はるか haruka@harukaze.net