#!/usr/bin/env ruby #-*- coding: utf-8 -*- # tail -f /usr/local/apache2/logs/error_log require 'sqlite3' require 'cgi' file = "../db/point.sq3" c = CGI.new(:accept_charset => 'utf-8') #PRAGMA foreign_keys = ON; gin = c["sam"] image = "" lp = 0 # 前回のアクセスで既に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),"+"UNIQUE(id,keyword))" ) 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) db.execute("REPLACE INTO users VALUES(?, ?, ?)", id, form_name, gin) #ユーザーがどのキャラを選択したか end pt = 0 # 開始直後は0点 # SELECTの検索結果に値があるかは [0] が nil かどうかで判定できる idol = db.execute("SELECT name FROM users WHERE id=?", gin)[0] name = db.execute("SELECT name FROM users WHERE id=?", id)[0] #qr_pt = db.execute("SELECT * FROM point WHERE id=?", id)[0] print(<<-EOF) <!DOCTYPE html> EOF if gin =="" gin = "red" end r = db.execute("SELECT count(*) FROM point WHERE id=?", id)[0] pt = (r ? r[0] : 0) print(<<-EOF) <html lang="ja"> <head><title>アイキス!★ホーム</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <script src="src/leaflet.js"></script> EOF #<link rel="stylesheet" href="src/leaflet.css" /> printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"%s.css\" >", gin) puts "<meta name=\"viewport\" content=\"width=device-width\"> </head> <body> <form method=\"POST\" action=\"home.rb\">" case gin when "red" printf(<<-"EOF") <div class="box1"> <img src="red1.png"> <p> 「一緒にQRコード探しにいこ! プロデューサー!!」</p> </div> EOF when "blue" print(<<-"EOF") <div class="box1"> <img src="blue1.png"> <p>「よ、よろしくお願いします……!」 </p> </div> EOF when "white" print(<<-"EOF") <div class="box1"> <img src="white1.png"> <p> 「多くのファンに私たちのライブ見てもらえるよう、頑張ります」 </p> </div> EOF end qr = ARGV[0] point = nil if ARGV[0] == "508568506962120147" #1つ目 point = "ID1" elsif ARGV[0] =="381770736200286426" #二つ目 point = "ID2" elsif ARGV[0] =="942515613567750545" #三つ目 point = "ID3" elsif ARGV[0] =="849054474888775292" #四つ目 point = "ID4" elsif ARGV[0] =="61520500659400819" #五つ目 point = "ID5" elsif ARGV[0] =="528856582528717535" #六つ目 point = "ID6" end if point db.execute("REPLACE INTO point VALUES(?, ?)", id, point) #db.execute("REPLACE INTO point VALUES(?)", id) end r = db.execute("SELECT count(*) FROM point WHERE id=?", id)[0] pt = (r ? r[0].to_i : 0) lp = pt * 65 p pt p lp printf("<br>現在の獲得ファン数:%s<br>",lp) if pt < 100 printf("次の話までの目標獲得ファン数:%s<br>",100-lp) elsif pt < 200 printf("<br>次の話までの目標獲得ファン数:%s<br>",200-lp) elsif pt < 560 printf("<br>次の話までの目標獲得ファン数:%s<br>",lp) end print(<<-"EOF") ◇ QRコードは全部で6種類あるよ!全て集めてみよう!◇ EOF case gin when "red" if lp >= 100 && lp < 200 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> <a href="red_1.rb">Episode 1</a> Episode 2<br> Episode 3<br> EOF elsif lp >= 200 && lp < 560 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> <a href="red_1.rb">Episode 1</a><br> <a href="red_2.rb">Episode 2</a><br> Episode 3<br> EOF elsif lp >= 560 print(<<-"EOF") <a href="red_1.rb">Episode 1</a><br> <a href="red_2.rb">Episode 2</a><br> <a href="red_3.rb">Episode 3</a> EOF elsif lp < 100 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> Episode 1<br> Episode 2<br> Episode 3<br> EOF end when "blue" if lp >= 100 && lp < 200 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> <a href="blue_1.rb">Episode 1</a> Episode 2<br> Episode 3<br> EOF elsif lp >= 200 && lp < 560 print(<<-"EOF") <a href="blue_1.rb">Episode 1</a><br> <a href="blue_2.rb">Episode 2</a> Episode 3<br> EOF elsif lp >= 560 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> <a href="blue_1.rb">Episode 1</a><br> <a href="blue_2.rb">Episode 2</a><br> <a href="blue_3.rb">Episode 3</a> EOF elsif lp < 100 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> Episode 1<br> Episode 2<br> Episode 3<br> EOF end when "white" if lp >= 100 && lp < 200 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> <a href="white_1.rb">Episode 1</a> Episode 2<br> Episode 3<br> EOF elsif lp >= 560 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> <a href="white_1.rb">Episode 1</a><br> <a href="white_2.rb">Episode 2</a><br> Episode 3<br> EOF elsif lp >= 450 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> <a href="white_1.rb">Episode 1</a><br> <a href="white_2.rb">Episode 2</a><br> <a href="white_3.rb">Episode 3</a> EOF elsif lp < 100 print(<<-"EOF") <br><br> ☆ ★ ☆ ★ ☆ ★ ☆ <br> Episode 1<br> Episode 2<br> Episode 3<br> EOF end end db.close puts " </form> <h2>gps情報の取得</h2> <script type=\"text/javascript\" src=\"idol.js\" charset=\"utf-8\"></script> <form method=\"POST\" action=\"./db.cgi\"> <button id=\"get\" button type=\"button\">start</button> <div id =\"geosa\">移動によるボーナスポイント:0</div> <div id =\"txt\"></div> <button id=\"js-sub\" type=\"button\">移動によるボーナスポイントを送信</button> #puts \"<div class=\"box1\">\" #printf(\"<img src=\"%s\">\n\",image) </body> </html>"