![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
前のページで入力された値を取得する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で文字列が長い時
-
メモリをアドレスを直接指定し...
-
デコードできない時があります><
-
【C#】数値の範囲チェックについて
-
Perl/CGIでスロットマシンを作...
-
Application.ScreenUpdating = ...
-
文字の横にプルダウンを表示さ...
-
VB6で、長い時間かかる処理...
-
実行時エラー 3020の対策
-
構造体の各データの表示につい...
-
セレクトメニューで2つの項目...
-
出来ているHTMLに無料CGIをつけ...
-
pythonで演算子を変数に代入す...
-
malformed header from script....
-
formで特定のinputを送信しない...
-
Pythonを用いてCGIを作る勉強を...
-
<SELECT>タグの折り返し
-
どちのほうがすきですか?
-
少数点以下の桁数について
-
セレクトボックスの内容を中央寄せ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
【C#】数値の範囲チェックについて
-
Perlでアルファベットを数...
-
途中まで出来ているのですが‥(D...
-
フォームで入力した値を表示し...
-
linq で 楽天ウェブサービスのX...
-
リロード後にプルダウンの選択...
-
CGIからメールに書き出しする際...
-
map(STL)でinsertを行いたいで...
-
半角スペースが有効にならない。
-
CGI(Perl)で、Net::FTPを使いたい
-
iteratorの再利用について
-
Visual Basicで作成したプログ...
-
クリックしたら順番に並び替わ...
-
ラズパイで感圧センサーを動か...
-
デコードできない時があります><
-
パターンマッチで変数でマッチ...
-
gpioを使ってSPIをシミュレーシ...
-
Application.ScreenUpdating = ...
おすすめ情報