コンピュータリテラシー演習のページへ
Rubyによるはじめてのプログラミング

例題:Web掲示板

以下のプログラムはごく簡単なWeb掲示板のCGIプログラムです。

board.cgi - ごく簡単な掲示板のプログラム
#!/usr/bin/env ruby
require 'cgi'
cgi = CGI.new

# http ヘッダの出力
print "Content-Type: text/html\n\n"
# ボードファイル名
BFILE="board.dat"

mes = cgi["message"][0]
name = cgi["name"][0]
if (mes) then mes = CGI.escapeHTML(mes) end
if (name) then name = CGI.escapeHTML(name) end

# メッセージがあったら、名前と共にボードファイルに追加
if (mes != "" && mes != nil) then
  fp = open(BFILE, "a")
  fp.print <<END
<dt>#{name} さんの書き込み:</dt>
<dd>#{mes}</dd>
END
  fp.close
end

# HTMLファイルの先頭部分を出力
print "<html><body>\n"
print "<h1>Very simple Web board</h1><hr><dl>\n"

# 間にボードファイルの内容を挟み込む
begin
  fp = open(BFILE, "r")
  while s = fp.gets do
    print s
  end
  fp.close
rescue
end

# HTMLファイルの末尾部分(フォーム含む)を出力
print <<END
</dl>
<hr>
<form method=post action=board.cgi>
お名前:
  <input type=text size=20 name="name" value="#{name}"><br>
書き込み欄: <br>
<textarea name=message rows=5 cols=60>
</textarea><br>
<input type=submit value="書き込み">
<input type=reset value="クリア">
</form>
</body>
</html>
END

備考:

課題

  1. 上記board.cgiを使ってWeb掲示板のCGIを実行せよ。
  2. 上記board.cgiを元に、さらに書き込んだ時の時間が書かれるようにプログラムを修正せよ。 例えば、「〜 さんは書きました:」の行が「〜 さんは書きました(2002/6/24 09:24:30)」といった風になるようにせよ。

東京情報大学情報システム学科
大見 嘉弘(Yoshihiro OHMI)