#!/usr/local/bin/perl # ############################################################# ### ### CGI環境変数テスト Ver.1.0 ### ### (C) 2001 Sentora Dori ### http://www.lowpower.iis.u-tokyo.ac.jp/~hat ### ############################################################# # # このプログラムのタイトル $title = '環境変数テスト'; # このファイル名 $thisurl = 'envtest.cgi'; $contenttype = ""; &init_form; $test = $form{'test'}; $test = &norm_input($test); &envtest; exit(0); sub envtest { @proxy = ('HTTP_VIA', 'HTTP_FORWADED', 'HTTP_CACHE_INFO', 'HTTP_X_FORWARDED_FOR', 'HTTP_CACHE_CONTROL', 'HTTP_PROXY_CONNECTION'); print "Content-type:text/html\n\n"; print <<"END_HEADER"; $contenttype $title
$title


END_HEADER print ""; print ""; foreach (sort keys %ENV) { $tablebgcolor = '#FFFFFF'; if ($_ =~ /HTTP_/) { $tablebgcolor = '#FFDFDF'; } if ($_ =~ /REMOTE_/) { $tablebgcolor = '#FFFFBF'; } for ($i = 0; $i < @proxy; $i++) { if ($_ eq $proxy[$i]) { $tablebgcolor = '#FFBFBF'; last; } } print ""; } print "
ENVIRONMENTVALUE
$_$ENV{$_}
"; print <<"END_FOOT";
メソッドテスト
postメソッド
getメソッド
END_FOOT } #----- ブラウザへの入力データの取得 ----- sub init_form { local($query, @dataarray, $data, $property, $value, $charcode, $method); $method = $ENV{'REQUEST_METHOD'}; $method =~ tr/A-Z/a-z/; if ($method eq 'post') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } @dataarray = split(/&/, $query); foreach $data (@dataarray) { ($property, $value) = split(/=/, $data); $value =~ tr/+/ /; $value =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg; $form{$property} = $value; } } #----- 入力データからのタグ、メタ文字の消去 ----- sub norm_input { local($string) = @_; $string =~ s/&/&/g; $string =~ s/"/"/g; $string =~ s//>/g; $string =~ s/,/,/g; $string =~ s/:/:/g; $string =~ s/;/;/g; $string =~ s/\r\n/\n/g; $string =~ s/\r/\n/g; $string =~ s/\n\n/

/g; $string =~ s/\n/
/g; return $string; }