プロが教える店舗&オフィスのセキュリティ対策術

自分で作成したCGIで送信されてきたフォームデータを
取得し、テキストファイルに出力するような処理をやってまして、
その送信されるデータにはTEXTAREAで入力されたデータもあります。

CGIの処理後に出力されたファイルをテキストエディタで開こうしたら、
テキストエディタでオープン不正であるようなメッセージが表示されました。
自分でもその原因についてバイナリエディタで調べたところ、
TEXTAREAで改行されたところに不正なゴミコードが混ざっているようでした。

改行コードは16進数でいうと「0D0A」のはずですが、バイナリファイルで
みたところ改行部分が「0D0D0A」となっているようで、どうやら「0D」の余計な
コードがテキストエディタで開いた時、エラーを発生させている原因となってるようです。
CGIの処理内でこの「0D」コードを削除する処理をいれるのもいいんですが、
なにか簡単にこの「0D」というゴミコードを取り除きたいのですが、
ナニかいい方法ないでしょうか?

A 回答 (1件)

Perlの場合ですが、デコードのついでに



$value =~ s/\r\n/\n/g;
$value =~ s/\r|\n/\n/g;
$value =~ s/\n/<BR>/g;

とかよくやりますよね。
C/C++、Rubyなどで書かれたものについてはわかりませんが。

そうするつもりで書いたコードが、まちがってるんじゃないでしょうか?
またはファイルへのprintミスではないでしょうか。
    • good
    • 0
この回答へのお礼

早速のアドバイスありがとうございます。
コメントいただいた後に、デコード処理周辺を調べてましたら、
やはり処理内でバグがあったようです。
TEXTAREA内での改行コードもそのまま「%0D%0A」の文字列として
取り込まれるようですね。これを無理にデコードさせたために
生じたバグのようでした。
自分が作ったCGIはCで作成したものなので、このようなバグが
生じたんでしょか???
おかげ様でバグ解決いたしました。また何かありましたら宜しくお願い致します。

お礼日時:2001/03/30 00:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!