※ ChatGPTを利用し、要約された質問です(原文:テキストエリアの改行表示)
テキストエリアの改行表示
現在CGIの勉強を行っているのですが、
以下の点がうまくいかなくて困っています。
-----------HTML(例)------------------
投稿名 :[ SAMPLE ]
TITLE :[ SAMPLE1 ]
TEXTAREA :[ aaaaaaaa
_____________bbbbbbb]
[投稿][リセット]
-----------サブフレーム(bbs.cgi)-----
投稿名:[ SAMPLE ]
TITLE :[ SAMPLE1 ]
TEXTAREA :[ aaaaaaaa
_____________bbbbbbb]
-------------------------------------
1.HTMLの方で投稿(サブフレーム形式)
2.BBS.CGIで処理を行う
3.TEXTAREAで改行を行って投稿した際の処理
(ここで投稿した際に別投稿として掲載されてしまいます。)
*ソース
#!/usr/local/bin/perl
use CGI;
#外部データの取得
$q = new CGI;
#外部データの受取処理
$Name1 = $q->param('name');
$Name2 = $q->param('title');
$Name3 = $q->param('url');
$Name4 = $q->param('txt');
@FILE_FOR;
$count=0;
print "Content-type: text/html; charset=Shift_JIS \n\n";
#書き込み
if($Name1 ne "" && $Name2 ne "" && $Name3 ne "" && $Name4 ne ""){
open(FH,">>log.dat");
print FH "$Name1,$Name2,$Name3,$Name4\n";
close(FH);
}
#読み込み
if(!open(FH,"log.dat")){
print "読み込みに失敗しました。\n";
}else{
$F=0;
foreach my $line (<FH>){
@FILE_FOR[$F] = $line;
$F++;
}
}
close(FH);
#結果表示
if($F ne 0){
for($Y=$F;$Y > 0;$Y--){
$C = $Y;
@BOX = split(/,/ ,$FILE_FOR[$Y - 1]);
print "<CENTER>";
print "<HR><TABLE BORDER=2><TR><TD>No.$C</TD></TR>";
print "<TR><TD>投稿者:</TD><TD>@BOX[0]</TD></TR>";
print "<TR><TD>投稿タイトル:</TD><TD>@BOX[1]</TD></TR>";
print "<TR><TD>URL:</TD><TD><a href=@BOX[2]>@BOX[2]</a></TD></TR>";
print "<TR><TD>内容:</TD><TD><B>@BOX[3]</B></TD></TR></TABLE><HR>";
print "</CENTER>";
}
}else{
print "現在は未投稿です。";
}
お礼
ご回答ありがとうございます。 上記の通りに変更してみたところ思った通りの結果になりました。 escapeHTMLというものを使うのですね。 本当にありがとうございました!