#!/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 "| ENVIRONMENT | VALUE |
";
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 "| $_ | $ENV{$_} |
";
}
print "
";
print <<"END_FOOT";
メソッドテスト
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/;/;/g;
$string =~ s/\r\n/\n/g;
$string =~ s/\r/\n/g;
$string =~ s/\n\n/
/g;
$string =~ s/\n/
/g;
return $string;
}