#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'sqlite3'
file = "../db/users.sq3"
require 'cgi'
c = CGI.new(:accept_charset => "UTF-8")
# 前回のアクセスで既にcookieが定義されていたら取得
# ブラウザからのcookieは、c.cookies[変数名][0] で受け取る
cookie_id=c.cookies["id"][0]
# 前回のアクセスで入力された値を取得
form_name=c["playname"] # nameをフォームから取得(もしあれば)
form_kwd=c["keyword"] # keywordも取得(もしあれば)
form_clr=c["clear"] # クリアボタン
if cookie_id == nil # (1)もしcookieからのidがなければ新規生成
# 新規idは、現在時刻を秒(to_i)にした文字列(to_s)と乱数の組み合わせ
newid = Time.now.to_i.to_s + "/" + rand(99999).to_s
id=newid # 新規idをidとする
else # (2)cookieからのidがあればそれをidとする
id=cookie_id
end
# idをすぐcookieで相手ブラウザに送る
# 変数の期限を24時間に設定し、expire変数に入れる
expire = (Time.now+24*3600).gmtime.strftime("%a, %d %b %Y %H:%M:%S GMT")
printf("Content-type: text/html; charset=UTF-8\n")
printf("Set-Cookie: id=%s; expires=%s\n\n", id, expire)
db = SQLite3::Database.new("file")
db.execute("PRAGMA foreign_keys=on")
db.execute("CREATE TABLE IF NOT EXISTS " +
"users(id text primary key, name text, creation text)")
db.execute("CREATE TABLE IF NOT EXISTS " +
"point(id, keyword text, FOREIGN KEY(id) REFERENCES users(id))")
if form_clr > "" && id > ''# クリアボタンが押されていたら
db.execute("DELETE FROM point WHERE id=?", id)
end
if form_name > "" # formからの名前設定がもしあれば
db.execute("REPLACE INTO users VALUES(?, ?, ?)", id, form_name, Time.now.to_s)
end
point = 0# 開始直後は0点
# SELECTの検索結果に値があるかは [0] が nil かどうかで判定できる
name = db.execute("SELECT name FROM users WHERE id=?", id)[0]
print(<<-EOF)
<!DOCTYPE html>
<html lang="ja">
<head><title>アイキス、しよ?</title>
<link rel="stylesheet" type="text/css" href="ema3.css" >
<meta name="viewport" content="width=device-width">
</head>
<body>
EOF
if !name # もしユーザのプレイ名が未設定なら
title = "アイドルを育成しよう!"
hello = "プレイ名を入力してね"
input = '<input name="playname">'
print('<form action="tess.rb" method="POST">')
printf(<<-EOF,
<h1>%s</h1>
<p>%s</p>
<p>%s<br>
<label><input type="checkbox" name="clear">クリアする</label><br>
<input type="submit" value="送信">
<input type="reset" value="リセット">
<input type="hidden" name="playname" value="id" >
</p>
EOF
title, hello, input,)
else # プレイ名設定済みならホーム画面へ
print('<form action="home.rb" method="POST">')
print('<input type="hidden" name="playname" value="id" >')
end
db.close
print(<<-EOF)
</form></body></html>
EOF