cookieを利用したWeb対話管理

簡単なポイント制ゲームを作ってみる。

概要

  1. ユーザが特定のページを開く
  2. 初めてのアクセスならユーザ名を入力させる
  3. 次のページで「秘密のキーワード入力」をさせる
  4. 適切なキーワード入力にポイントを与える
ページA

「はじめまして!」

ユーザ名入力

ページB

秘密のキーワード

入力処理

ページC

適切なキーワードなら

ポイント加点処理

(この処理を繰り返す)

→
  ↓
←

実際の画面イメージは以下に示す。ページBとページCを融合し、 秘密キーワード入力と、ポイント加点処理を同時に行なうページのイメージである。

初回アクセス画面(ページA)

○○ゲームへようこそ!

ポイントゲームを始めましょう。

あなたのプレイ名を決めます:

ポイント処理の画面(ページB)その1

両羽のガイア さんのホーム

現在のポイントは 0pt です。

当てたキーワード(0/4):

キーワードを入れてください:

ポイント処理の画面(ページB)その2

上記ページで当たりキーワード(例:もっけ)を入れて[送信] を押した場合のイメージを以下に示す。

両羽のガイア さんのホーム

現在のポイントは 25pt です。

当てたキーワード(1/4):「もっけ」

キーワードを入れてください:

プログラムの構成

次のような流れでプログラムを構成する。ブラウザと cookie 変数 id を用いてユーザの特定を行なう。

  1. ブラウザが cookie を送って来なかったら新規ユーザとみなし、 絶対に誰とも重複しないようなidを生成してブラウザに cookie として送り、最後にページ A を出力
  2. ブラウザが cookie 変数 id を送って来たら、以後のデータ処理はその id を利用する。プレイ名を送って来たら id => プレイ名 のハッシュにして記録する。
  3. 2と同時に、ブラウザが form で keyword を送って来たら、秘密のキーワードと照合して、 当たっていれば得点を加算。

見本

ckgame(SQLite3版)(src)

ckgame(PStore版)(src)

Ruby-SQLite3のポイント

yuuji@e.koeki-u.ac.jp