Re: パラメータの名前の取り出しができない ( No.1 ) | 
- 日時: 2016/09/14 08:02
- 名前: 名無しさん
 
   -  デバッグする位置を「# 配列に内容をpush」のあとくらいにして確認してみてください。
    CGI.pmだと思いますが、POSTDATAはPOSTで送信された内容を  そのまま表示しますので、CGI.pmは値を受け取れていますが、  その後、エスケープしたりの後でおかしいのではないかと思います。    ひとまず sub FrmDcd の末尾あたりでデータが正しく格納されているか確認し、  格納されているのであれば、sub Main で参照できないということなので、  対象の配列をourにするなどして参照できるようにします。  sub FrmDcd末尾でも参照できない場合は、取り出し方か、エスケープの不備かもしれません。
   
 | 
  Re: パラメータの名前の取り出しができない ( No.2 ) | 
- 日時: 2016/09/14 14:06
- 名前: 名無しさん
 
   -  ご指摘、ありがとうございます。
    35行目にPush前のデバッグと  36行目にPush後のデバックをいれた結果、  Push前は    mode=send  message=あ  name=ああああ ああ  kana=いいいい いいい    Push後は  空白でした。    pushの記述がおかしいのでしょうか。        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 #&debug($value[$i]);  36 push(@{$form{$field}},$value[$i]);  37 #&debug(@{$form{'mode'}}[0]);  38 }#for  39 }
   
 | 
  Re: パラメータの名前の取り出しができない ( No.3 ) | 
- 日時: 2016/09/14 14:17
- 名前: 名無しさん
 
   -  配列と連想配列がごっちゃになってる気がしますが、pushは配列の末尾に要素を追加するので、以下のように行います。
  (配列 @array の末尾に '文字列' を追加)    push(@array,'この要素を末尾に追加');    対して連想配列はキーを元に要素を扱いますので、以下のように値を入れます。  (連想配列 %Hash のキー five に 5 を代入)    $Hash{five} = 5;    このあたりを確認してみてください。
   
 | 
  Re: パラメータの名前の取り出しができない ( No.4 ) | 
- 日時: 2016/09/14 16:12
- 名前: 名無しさん
 
   -  早々のご回答、有難うございます。
    連想配列ですね。    push(@{$form{$field}},$value[$i]);    デバックでは$value[$i]の値はちゃんと入っていますし、    要素の$filedに何がはいっているかデバックしたら、  POSTDATAとなります。    予想は、modeとかmessageとかになってて欲しいのですが。  このあたりが、いけないのでしょうか。
   
 |