#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'sqlite3' file = "../db/point.sq3" ######### ###SQLの場所変え ######## 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("../db/users.sq3") 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="name.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 #導入画面 #require 'cgi' #c = CGI.new(:accept_charset => 'utf-8') page = Hash.new n = 0 img = "" open("aikiss-p.txt","r:utf-8") do |cat| while line = cat.gets if /(\d+)\s+(\S+)\s+/ =~line page[$1] = $2 end end end p = c["page"] gin = c["adm"] x = c["sam"] if p=="" p="1"# page変数指定がなければ "1" とする end name = c["name"] if p =="9" print(<<-"EOF") <form method="POST" action="home.rb"> EOF else print(<<-"EOF") <form method=\"POST\" action=\"pro.rb\"> EOF end # ページ番号による切り替え処理 printf("<p>%s</p>\n",page[p]) case p when "1" img = "1.jpg" nextpage = "2" when "2" nextpage = "3" when "3" nextpage = "4" img = "blue1.png" when "4" nextpage = "5" img = "white1.png" when "5" nextpage = "6" img = "red1.png" when "6" nextpage = "7" when "7" nextpage = "8" when "8" puts('<img src="shugo2.png">') nextpage = "9" print(<<-"EOF") <p><br> <label><input type="radio" name="adm" value="red">中央(日和山あかね)</label><br> <label><input type="radio" name="adm" value="white">画面左(白鳥ゆき)</label><br> <label><input type="radio" name="adm" value="blue">画面右(鳥海あおい)</label></p> EOF when "9" case gin when "red" print(<<-"EOF") <img src="red1.png"align="left"valign="middle"> <p>「初めまして、日和山あかね(ひよりやま あかね)だよ!<br>好きなのは歌とダンス!<b\ r>!夢は大きなステージでライブをすることでっす!<br>たっくさん努力するから応援よろし\\ くね</p> この子にする<br> <br><INPUT type="button" onclick="history.back()" value="NO"> <input type="submit" value="YES"> EOF when "white" print(<<-"EOF") <img src="white1.png"align="left"valign="middle"> <p>初めまして白鳥ゆき(しらとり ゆき)です。<br>他の娘たちみたいな輝くもののない普通\ の子ですが、<br>精一杯頑張りますのでよろしくお願いします。」</p> この子にする?<br> <br><INPUT type="button" onclick="history.back()" value="NO"> <input type="submit" value="YES"> EOF when "blue" print(<<-"EOF") <img src="blue1.png"align="left"valign="middle"> <p>「は、初めまして。えっと、鳥海あおい(とりみ あおい)と申します。<br>人前に立つ\\ のは苦手で、少しでもこんな自分を変えられたらって思ったんですけど。<br>やっぱり私、向\\ いてないですよね…?」</p> この子にする? <br><INPUT type="button" onclick="history.back()" value="NO"> <input type="submit" value="YES"> EOF end nextpage =nil end if p =="9" printf("<input type=\"hidden\" name=\"sam\" value=\"%s\">\n", gin) printf("<input type=\"hidden\" name=\"page\" value=\"%s\">\n", nextpage) #elsif p =="10" # printf("<input type=\"hidden\" name=\"sam\" value=\"%s\">\n", gin) #printf("<input type=\"hidden\" name=\"page\" value=\"%s\">\n", nextpage) elsif nextpage printf("<input type=\"hidden\" name=\"page\" value=\"%s\">\n", nextpage) printf("<img src=\"%s\">\n",img) puts('<br><INPUT type="button" onclick="history.back()" value="前へ">') puts('<input type="submit" value="次へ">') end 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