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

フォームから受け取ったデータに改行があれば<br />に変換。
さらに<br />が2つ続いたら</p><p>に変換。
それを、テキストエリアに表示したいのですが、次のようなコードを書いたところ、
入力するデータが少ない(100文字程度)時は、問題なく処理されますが、データが多い(200~300文字程度)とエラー(Premature end of script headers:hoge.cgi)になります。
どこがいけないのか教えて下さい。
PCのスペックの問題なのでしょうか。

送り側(htmlのフォーム)の該当箇所
<textarea name="reviw" id="reviw" rows="8" cols="46"></textarea>

CGIは
冒頭で
受け取ったデータの改行コードは、\nに変換し
$in{$key} = $val;
の形でセットしてあります。

print "Content-type: text/html\n\n";
(中略)

print <<'CK13';
<tr>
<td>
<textarea name="tagoutput" cols="70" rows="10" onclick="this.focus();this.select()">
CK13
print '<p>';
&reviw_put;
print <<'CKouttag6';
</p>
</textarea>
</td></tr>
CKouttag6

(後略)
がhtml出力部分で、

サブルーチンは
sub reviw_put {
$in{'reviw'} =~ s/\x0A/<br \/>/g;
$in{'reviw'} =~ s/(<br \/>){2}/<\/p><p>/g;
print "$in{'reviw'}";
}

です。

A 回答 (1件)

こんばんは。


恐らくデータのサイズが32768バイトを超えているのが原因かもしれません。

参考サイトを載せますね。
#OKWaveでも話題に出てたようです。

http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83% …
http://okwave.jp/qa1493606.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

原因が全く分からなかったので、とても参考になりました。
データを分割して処理するようにしてみようと思います。

とても助かりました。ありがとうございます!

お礼日時:2008/02/07 23:52

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