package Param;
# Last modified: Sat Mar 30 10:50:57 JST 2002
use Tool;
use Jcode;
use strict;
my $allowed_length = 50_000;
sub get{
my($allow_method) = @_;
my($query,$key,$data,%param);
my($method) = $ENV{REQUEST_METHOD};
# データ取得
if ($method eq 'POST'){
my $length = $ENV{CONTENT_LENGTH};
# メソッドチェック
&Tool::error('Method not allowed: POST')
if($allow_method && $allow_method !~ /POST/i);
# 長さチェック
&Tool::error('文章が長すぎます: $length bytes.')
if ($length > $allowed_length);
read(STDIN, $query, $length);
}elsif($method eq 'GET'){
# メソッドチェック
&Tool::error('Method not allowed: GET')
if($allow_method && $allow_method !~ /GET/i);
$query = $ENV{'QUERY_STRING'};
}else{
&Tool::error('Unknown method: $method');
}
foreach(split('&',$query)){
($key,$data) = split('=',$_);
$data =~ s/\+/ /g;
$data =~ s/%([\dA-F]{2})/pack('C',hex($1))/egi;
$data =~ tr/\t/ /;
# 文字変換
jcode(\$data)->euc;
# EUCの正当性チェックしようよ
$data =~ tr/\0\x7F//d;
$param{$key} = $param{$key}
? "$data\0$param{$key}"
: "$data"
;
}
%param;
}
1;