| |
フォームからデータを入力して表示します。受け渡しの情報は環境変数%ENVに自動的に格納されます。 フォームからの入力方法にはGETとPOSTがあり下記の特徴があります。 GETかPOSTかは入力のformタグのmethodで指定し、環境変数REQUEST_METHODに格納されます。 methodを指定しない場合はGETになります。 GET ・フォーム入力データは送り先のURLの後に?を付けて渡される。 xxx.cgi?xx=xx&xx=xx・・・ ・フォームだけではなくリンクタグでデータを簡単に渡すことができる。 ・入力データは環境変数QUERY_STRINGに格納される。 ・環境変数に格納できるデータ長が限定される。 ・入力データがURLで表示されるので内容が分かってしまう。 POST ・入力データは標準入力STDINに格納される。 ・データ長が環境変数CONTENT_LENGTHに格納される。 ・大量のデータを送ることができる。 ・入力データはURLに表示されない。 フォームから入力されたデータは下記のようにURLエンコードされます。 その為、入力データを表示するにはデコードして元に戻す必要があります。 ・「名前=値」で一対にします。 ・複数の対は&で区切ります。(名前=値&名前=値) ・空白は「+」に変換します。 ・日本語文字コードは%に続いて16進数2桁で表します。(英数字はそのまま表します) read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); 標準入力STDINからデータを読み取る。 ($name,$data) = split(/=/,$in); 入力されたデータ「word=データ」をsplitで分離する。 $data =~ tr/+/ /; trで「+」を空白に変換する。 $data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 文字コードを日本語に変換する。 | |
■プログラム (sample2.cgi)
| |
■実行結果
|
HOME | Copyright (C) CGI-design All Rights Reserved. |