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

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

ここでは、テキスト入力以外から入力されたデータの扱い方について説明します。 なお、データを受け取る場合の注意点は、Perlで書いたものと同じです。

最初に、リンクによってデータを送る方法を説明します。 まず、CGIを呼び出すページのHTMLで、次のようにリンクにデータを書きます。

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

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

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

  1: #! /usr/bin/python
  2: 
  3: import os
  4: 
  5: Data = os.environ['QUERY_STRING']
  6: 
  7: print "Content-type: text/html\n\n"
  8: print Data

ブラウザから送られるデータは、「QUERY_STRING」という「環境変数」に入ってます。 Pythonで環境変数の値を得るには、 「os」ライブラリの「environ」メソッドによって、すべての環境変数の配列が得られます。 つまり「os.environ」が変数の配列、 正確には連想配列(Pythonでは「辞書」と呼ばれます)と考えていいわけです。 この「辞書」で、「QUERY_STRING」というキーに対する値を読む、ということになります。
ややこしくなりましたが、「os.environ['QUERY_STRING']」が、 「環境変数の QUERY_STRING の値」ということです。 あとは、それを表示しているだけです。
注意:この例では、データをそのまま表示してますが、こういうのは危険で全く悪い例です。

しかし、Python では、CGIのライブラリが標準で入っているので、この方法は普通は使わないと思います。 次にライブラリをつかって、フォームから入力されたデータを受け取る方法を説明します。


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

Previous: 2-3 乱数を使った表示

Contents


Foundation of CGI Page

春風はるか haruka@harukaze.net