![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
前のページで入力された値を取得するCGIですが、どうしても半角スペースを認識しません。
それどころか、半角スペースの後ろを一切消してデータを取得しています。
同じように作成したものはきちんと動いているのに…。
どこが間違ってるかご指摘お願いします。
----------
#!/usr/local/bin/perl
read(STDIN,$buffer,$ENV{'content_length'});
@atai = split(/&/,$buffer);
foreach $atais(@atai){
($key, $value) = split(/=/, $atais);
$FORM{$key}=$value;
}
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$buffer =~ tr/+/ /;
$value =~ tr/+/ /;
$key =~ tr/+/ /;
print "Content-type:text/html\n\n";
print "$key<BR>\n";
print "<A HREF=./***.cgi>Back</A><BR>\n";
open (FH,">***.log");
@filew="$buffer\n";
print FH @filew;
close(FH);
exit;
----------
以上です。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
どうもwolfwoodです。
Perlの処理自体は正しいです。
ただし、受け渡す元のデータに問題があると思います。
私も経験があるのですが例えば受け渡し元がhiddenの場合
<INPUT type=hidden name=test value=$data >
このように書いても動きますが、valueの値$dataに半角が入ると
$data="test test";
<INPUT type=hidden name=test value=test test >
となるためvalueの値はtestのみになります。
HTMLが正しく認識できるようにクォーテーションで囲んでください。
<INPUT type="hidden" name="test" value="$data" >
安全性を高めるためにクォーテーションを付ける癖をつけて置くと良いでしょう。
回答ありがとうございます。
""でくくってませんでしたので、""(実際はcgiファイルなので'')でくくった
ところ正常に認識してくれました!ありがとうございました。
まさかこんなところでひっかかってるとは知らずずっとコードとにらめっこしてました。
本当にありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
cout, 小数点以下2桁を表示す...
-
Application.ScreenUpdating = ...
-
python3について。
-
formで特定のinputを送信しない...
-
<SELECT>タグの折り返し
-
実行中の変数の中身をイミディ...
-
UWSCのSELECT文の記述方法
-
pythonで演算子を変数に代入す...
-
セレクトメニューで2つの項目...
-
フォームの日本語が文字化け
-
チェックボックスのCGIへの値の...
-
MSXMLでの属性の存在確認法
-
c言語のプログラミングの問題で...
-
実行時エラー 3020の対策
-
セレクトメニューで選んだ値を...
-
VBAでPDFのコピーとリネームを...
-
【至急!!!】python言語で本を見...
-
ホームページビルダーのメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
フォームで入力した値を表示し...
-
Perlでアルファベットを数...
-
Perl/CGIでスロットマシンを作...
-
【C#】数値の範囲チェックについて
-
途中まで出来ているのですが‥(D...
-
map(STL)でinsertを行いたいで...
-
cout, 小数点以下2桁を表示す...
-
パターンマッチで変数でマッチ...
-
リロード後にプルダウンの選択...
-
半角スペースが有効にならない。
-
複数行URLエンコードができるCG...
-
Excel VBAで行追加後の...
-
ラズパイで感圧センサーを動か...
-
アンケートフォームのvalueの値...
-
linq で 楽天ウェブサービスのX...
-
デコードできない時があります><
-
CGIからメールに書き出しする際...
-
このCGIサブルーチンを解説して...
おすすめ情報