• ベストアンサー
  • 暇なときにでも

伝言掲示板の作成(超初心者です)

  • 質問No.762081
  • 閲覧数162
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 73% (527/714)

授業の課題で伝言掲示板を作るのですが
行き詰ってるので助けてください。

ファイル名write.htmlで
<html>
<body>
掲示板プログラム<br>
書き込み内容を指定してください
<form action="write.cgi">
<input type="text" name="contents">
<input type="submit">
</form>
</body>
</html>

write.cgiで
#!/usr/bin/perl
print "Content-type: text/html\n\n";
use CGI qw(:standard);
$value = param("contents") ;
open(OUT,">contents.txt");
print OUT $value;
close(OUT) ;
print "<html><body>";
print "書き込みが終了しました";
print "</body></html>";

read.cgiで
#!/usr/bin/perl
print "Content-type: text/html\n\n";
open(IN,"contents.txt");
$value = <IN>;
close(IN);
print "<html><body>";
print $value;
print "</body></html>"

空のテキストファイルcontents.txtを作成しました。

これで伝言掲示板はできますよね??
では前の書き込みが消えないようにするにはどうした良いですか?
あと、装飾したい場合はwrite.htmlにタグを利用して書けばよいのですか??

わかりにくい書き込みですみません。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 39% (97/245)

write.cgiの
「open(OUT, ">contents.txt");」の部分が間違っています。
「>」一つですと新規作成状態で開くので、
ファイルの中身は空になってしまいます。
追記したい場合は「>>」と書きます。

perlから離れて久しいので
判断が必要かどうかいまいち自信が無いのですが、
下の様に変更すれば前の書き込みは消えなくなります

$FileName = "contents.txt";
# すでにファイルが存在する時は追記
if(-f $FileName){
open(OUT, ">>".$FileName);
}
# ファイルが無い時は新規作成
else{
open(OUT, ">".$FileName);
}

…が、いつまでも最初の書き込みが消えないため
表示も最初の書き込みのままになってしまいますので、
read.cgiで最後の書き込みを取り出すように処理を取り出す必要があります。

あと装飾についてですが、
書込みのフォームを装飾したい場合はwrite.htmlを
表示を装飾したい場合はread.cgiの表示を変更します。
お礼コメント
piano07

お礼率 73% (527/714)

回答ありがとうございます。
これからやってみようと思いますが、
なかなか難しいんですね・・・。
投稿日時:2004/01/27 18:11
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ