#!/usr/bin/env ruby # coding: utf-8 require "cgi" require "pstore" c = CGI.new(:accept_charset => "UTF-8") name = c["name"] cmt = c["comment"] time = Time.now # Time.nowで現在時刻を取得 # HTMLヘッダの出力 print "Content-type: text/html; charset=UTF-8\n\n" print"<html><head><title>ひとこと掲示板</title></head><body>\n" print"<h1>ひとこと掲示板</h1>\n" bbs = PStore.new("data.db") bbs.transaction do if bbs["root"] == nil bbs["root"] = Hash.new end data = bbs["root"] # ここまではおきまり if name >"" && cmt > "" # 名前とコメント、両方値があるなら登録 data[name] = [time, cmt] # 今日の日付とコメント end # フォーム出力 print"<form method=\"POST\" action=\"./comment.rb\">\n" print '<p> 名前: <input name="name" type="text" maxlength="40"><br> コメント <br> <textarea name="comment" cols="40" rows="5"> </textarea><br> <input type="submit" value="OK"> <input type="reset" value="reset"><br> </p><hr>' # 既存のコメント出力(キー毎) print "<dl>\n" # 定義環境開始 for i in data.keys.sort{|x, y| data[y][0] <=> data[x][0] # 日付の新しい順にソート } day = data[i][0] # 第0要素が日付 msg = data[i][1] # 第1要素がコメント、それぞれ取り出す printf(" <dt> %s\n", i) # キー(つまり飲んだものの名前) printf(" <dd> 記載日: %s<br>\n", day.strftime("%Y/%m/%d/ %X")) printf(" %s\n", msg) end print "</dl>\n" # 定義環境終了 end# db.transaction 終わり print "<hr></body>\n</html>"