
お世話になります。
表記の通りチェックボックスで複数選択するHTMLを次のように作成しました。
======== 送信元HTML =========
<FORM action='******.cgi' method='POST'>
<INPUT type='checkbox' name='Q6_ans' value='1'>
<INPUT type='checkbox' name='Q6_ans' value='2'>
<INPUT type='checkbox' name='Q6_ans' value='3'>
<INPUT type='checkbox' name='Q6_ans' value='4'>
<INPUT type='checkbox' name='Q6_ans' value='5'>
<input type=submit value='実 行'>
</FORM>
これを受取るPerl-CGIのコードをこうしました。
======== 受信するcgi =========
my @files_2 = split(/\0/,$in{'Q6_ans'});
for($i=0;$i<=4;$i++){
if($files_2[$i] ne ""){$d[6].=$files_2[$i]." , ";}
}
例えばチェックボックスで2と3を選ぶと$d[6]の値は「2 , 3 ,」となるつもりだったんですが、意に反し「23 ,」となります。
配列の値を調べると$files_2[0]に「23」が代入されて、$files_2[1]から$files_2[4]は空です。つまり「split(/\0/,$in{'Q6_ans'})」での分割がされていないようなのです。
何が原因で、どこが間違いなのでしょう。チェックボックスの値は\0で区切られていると思っているのですが、間違いでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#2です。
cgi-lib(ReadParse)を利用しているなら、\0で区切られた文字列として格納されているとう前提も、提示されてる分割、再連結のコードにも間違いはありませんので他の部分に問題があるとしか・・・
ReadParseでフォームデータを取り込んでから、
質問文にある処理にたどり着く間でデータを加工している部分(文字コード変換、エスケープ処理等々)があるのでしょうからそこを調べてみては。
No.2
- 回答日時:
>チェックボックスの値は\0で区切られていると思っている
フォームデータの取り込みにcgi-lib(ReadParse)を使っているならそうなりますね。
そうでなければ、$in{'Q6_ans'}【%in】にフォームデータを読み込むあたりの処理しだいです。
No.1
- 回答日時:
>チェックボックスの値は\0で区切られていると思っているのですが、間違いでしょうか?
それは、$in{}をどう読み込んでいたかにかかっていると思います。
多分cgiの中に、
read(STDIN, $???, $ENV{'CONTENT_LENGTH'});
と言う所があると思いますが、ここ付近でパラメータを読み込んでいます。
その後ろに、$in{}に読み込んでいる、
$in{'??'}.=$????;
みたいな所がありませんか?
この前後で\0の文字があるか、あるならどうしてるかにかかります。
上だけだと、ただ'23'になります。
もしもそうなら、ここを、
if($in{'??'} ne ''){$in{'??'}.='\0'}
$in{'??'}.=$????;
にすれば、\0で区切られます。
p.s.
前後の関係を見ないと、確かな事は言えませんが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
InputMan の imTextについて
-
文字コードの%E3%80%とは何です...
-
CSVファイルの中で、「 , 」カ...
-
VBA 文字に半角が含まれて...
-
フォントの色を保持したままセ...
-
エクセルで数値を全角文字(カ...
-
住宅にカナを入力する際に丁目...
-
データにカンマが入ったCSVデー...
-
CString から LPCTSTRの型に変換
-
COBOL・全角判定
-
EXCELからCSVにすると余計なカ...
-
「何とかで始まり、何とかで終...
-
VBA EXCEL あるセルの中の一...
-
「abcで始まらない」を正規表現...
-
「一角」って何でしょうか
-
16進数の文字列を文章に変える
-
IEからEdgeへの移行に伴うIMEの...
-
各項目がダブルクォーテーショ...
-
Excel 住所の分割(文字数制限...
-
カンマ区切りの数字をCSVフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
常用漢字?でない文字を判定す...
-
文字化けを元に戻せますか?
-
ダブルクォート文字などをフォ...
-
InputMan の imTextについて
-
チェックボックスの複数選択の...
-
文字実体参照が勝手に変換され...
-
SJISに関する少々複雑な問題
-
unicodeの表示
-
特殊文字をPOSTした際の動作は?
-
textareaでHTMLタグを使いたい
-
テキストエリアに半角「\\」ま...
-
パターンマッチ変換について
-
デコードフォームについて。
-
Perlのsprintfで使われるフォー...
-
半角カナから全角カナへ
-
正規表現でカンマを対象にする方法
-
色の指定
-
制御コード文字の受け取りと処理
-
何故、日本は未だに数字を3桁...
-
CSVファイルの中で、「 , 」カ...
おすすめ情報