記事参照
No.0 2016/09/12 09:50
題:パラメータの名前の取り出しができない
名:秀sevenID:gs063Ff6eEV0
問合せフォームでメール送信処理で行き詰っています。
以下のCGIソースで、6行目のデバックでは、以下の結果が返ってきますが、
7行目のName指定では、値がブランクになり、エラー処理に移ってしまいます。
また35行目のPushで配列に追加していますが、デバックで$value[$i]も値が
取れています。ご教示下さい。
デバック結果
mode=send
message=あ
name=ああああ ああ
kana=いいいい いいい
cgiソース抜粋
1 my %form;
2 Main();
3
4 sub Main {
5 &FrmDcd;
6 &debug(@{$form{'POSTDATA'}}[0]);
7 my $mode = @{$form{'mode'}}[0];
8 if($mode eq 'send'){
9 &Conf;
10 }else{
11 &SystemError('エラー','不正なリクエストです!!');
12 }
13 }
14
15 sub FrmDcd{
16 my $query = new CGI;
17 foreach my $field ($query->param) {
18 my @value = $query->param($field);
19 for (my $i=0; $i < @value; $i++) {
20 # 不都合な文字を取り除く
21 # tab,&,",<,>をエスケープ
22 $value[$i] =~ s/\t//g;
23 $value[$i] =~ s/&/&/g;
24 $value[$i] =~ s/"/"/g;
25 $value[$i] =~ s/</</g;
26 $value[$i] =~ s/>/>/g;
27 $value[$i] =~ s/,/ /g;
28 # 改行コード(CR,LF,CRLF)を<BR>に変換
29 $value[$i] =~ s/\x0D\x0A/<BR>/g;
30 $value[$i] =~ s/\x0D/<BR>/g;
31 $value[$i] =~ s/\x0A/<BR>/g;
32 # 文字コードを変換(条件によって使い分ける)
33 jcode::convert(\$value[$i], 'sjis');
34 # 配列に内容をpush
35 push(@{$form{$field}},$value[$i]);
36 }#for
37 }
掲示板に戻る