テキストフィールドからの入力への応答(CGI)


 テキストフィールドからの入力に応答をするCGIプログラムの例として, 「肥満度判定ページ」を示します。

 このページ上で,テキストフィールドに体重と身長を入力し,「計算開始」ボタンを押すと,下のhiman.cgiプログラムが実行されます。


#!/usr/bin/perl ←perlプログラムを実行するプログラム(インタプリタ) print"content-type:text/html\n\n"; ← HTMLを出力 print <<EOF; <HTML> <HEAD> <TITLE>Himando Hantei</TITLE> </HEAD> <BODY> <H2>肥満度判定結果</H2> <HR> EOF $m=$ENV{"REQUEST_METHOD"}; ←データの送信方式を得る if($m eq "GET"){ $str=$ENV{QUERY_STRING}; ←GETなら環境変数から読む }else{ read(stdin,$str,$ENV{"CONTENT_LENGTH"}); ←POSTなら標準入力から読む } @parts=split('&',$str); ← &で生のデータを分離 $i=0;foreach(@parts){ ($name[$i],$value[$i])=split("="); ← =で名前と値を分離,値を$valueに代入 $i++; } $taiju=$value[0]; ← 体重の値を変数$taijuへ代入 $shintyo=$value[1]; ← 身長の値を変数$shintyoへ代入 $hyojun=($shintyo-100)*0.9; print"標準体重は$hyojun Kgです。<BR>\n"; $himando=($taiju-$hyojun)/$hyojun*100; print"あなたの肥満度は$himandoで、\n"; if (-20>=$himando) {print "やせすぎ";} elsif (($himando>-20) and ($himando<-10)) {print "やせぎみ";} elsif ((-10<=$himando) and (10>=$himando)) {print "正常";} elsif ((10<$himando) and (20>$himando)) {print "太りぎみ";} elsif ($himando>=20){print "太りすぎ";} print "です。\n"; print"</BODY>\n"; print"</HTML>n";