プロが教える店舗&オフィスのセキュリティ対策術

チェックボックスの数値を、PERLで受けたいのですが。

チェックボックスのチェックが、1つの時は、うまくいきます。2つ以上、チェックを入れるとうまくいきません。

どうしらた、いいでしょうか?

PERLで、検索サイトを制作しているものです。

A 回答 (1件)

どうやって取得しているか、具体的なソースコードを教えて下さい。

また、どううまくいかないのか、具体的なエラーメッセージも教えて下さい。この2点があれば、早くいい回答を得られるようになると思います。


さて、ここからは勝手に貴方の環境を予想して答えますが・・・CGI.pmだとすると、
my $check = $cgi->param('check');

ってしてますか?

my @check = $cgi->param('check');

とするといいかもしれないです。

この回答への補足

ご回答、ありがとうございます。

こちらの疑問点を、箇条書きします。

(1)CGI.pmとは、なんでしょうか?perlのソースもしくは、環境をみればいいのでしょうか?

(2)ソースコードを書きます。かなり、長いので、受け取りの部分を中心に書きます。

# 初期設定
#======================================================================#
require $require if -e $require;
if($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN,$QUERY,$ENV{'CONTENT_LENGTH'})
}else{
$QUERY = $ENV{'QUERY_STRING'}
}
$i = 0;
@QUERY=split(/&/,$QUERY);
foreach (@QUERY){


($n,$v)=split(/=/);

$v=~ tr/+/ /;
next if $n eq "data" && $v !~ /[^\d\%]/ && (@data = split('%',$v));

$v=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$n=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$v=~ s/\r|\n|\t| / /g;
$v=~ s/\s+(""|"|,)\s+/ /g;
$v=~ s/^(""|"|,)$//g;



next if $n eq "" || $v eq "";
&jcode'convert(*v,'sjis') if $jcode'version;



if($n=~ /^IDn/){
$ID{$n}=$v

}elsif($n=~ /^IDv(\d+)/){
$IDv{$1}.=" " if $IDv{$1};
$IDv{$1}.=$v
}else{
$s=$n=~ /^join/ ?"":" ";

$FORM{$n}.=$s if $FORM{$n};
$FORM{$n}.=$v
}


}




if($FORM{'query'}){$i = 0;
@QUERY = split(/&/,$FORM{'query'});
foreach (@QUERY){
($n,$v)=split(/=/);
next if $n eq "" || $v eq "";
if($n=~ /^IDn/){
$ID{$n}=$v
}elsif($n=~ /^IDv(\d+)/){
$IDv{$1}.=" " if $IDv{$1};
$IDv{$1}.=$v

}else{
$s=$n=~ /^join/ ?"":" ";
$FORM{$n}.=$s if $FORM{$n};
$FORM{$n}.=$v

}

}

}

$print_max=$FORM{print} if $FORM{print} && $FORM{print} !~ /\D/;
$print_max=$max_max if $print_max > $max_max;

$n=~ /IDn(\d+)/ &&($FORM{$v}=$IDv{$1})while ($n,$v)=each(%ID);
if($QUERY=~ /join/){
$n=~ s/^join// && push(@form,"$n\t$v"),delete $FORM{"join$n"} while ($n,$v)=each(%FORM);
foreach(@form){
($n,$v)=split(/\t/);
$FORM{$n}=$v if $n ne "" && $v ne ""
}
undef @form;
}
if($QUERY=~ /select/){
while(($n,$v)=each(%FORM)){
if($n=~ s/^select// && $FORM{"$v$n"} eq ""){
push(@form,"$v$n\t$FORM{\"value$n\"}");
delete $FORM{"select$n"}
}
}
foreach(@form){
($n,$v)=split(/\t/);
$FORM{$n}=$v if $n ne "" && $v ne ""
}
undef @form

}
です。
以上

補足日時:2007/06/06 09:29
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!