Newer
Older
2022-KEGO / mycgi / r2-8-2.rb
@Sato Keigo Sato Keigo on 20 Oct 2022 1 KB add mycgi in 2022
#!/usr/bin/env ruby
# coding: utf-8

myname="r2-8-2.rb"
require "cgi"
c = CGI.new(:accept_charset => "UTF-8")
require "pstore"
x = PStore.new("data/word.db")	# 別ディレクトリにする

print "Content-type: text/html; charset=UTF-8\n\n"

print "<!DOCTYPE html>
<html>
<head><title>Word</title></head>
<body>"

# 値入力フォームもこのCGIで出力する。
# formのactionをこのCGIプログラムに指定している。
# (mynameはこのスクリプト名)
printf("<form method=\"POST\" action=\"./%s\">\n", myname)
print ' <p>
おなまえ: <input name="name" maxlength="40"><br>
ひとこと: <input name="word" maxlength="80"><br>
<input type="submit" value="GO">
<input type="reset" value="reset">
</p></form>'

x.transaction do
  x["word"] ||= Hash.new
  word = x["word"]
  if c["name"] > "" && c["word"] > ""
    name = c["name"]
    word[name] = c["word"]
  end
  print "<pre>\n"
  for p, w in word
    # フォーム入力値を出力するときは必ず CGI.escapeHTML() する
    person = CGI.escapeHTML(p)
    wrd = CGI.escapeHTML(w)
    printf("%sさんのひとこと「%s」\n", person, wrd)
  end
  print "</pre>"
end
puts "</body></html>"