おみくじ改良版

11月 30th, 2007 by admin

サイドバー上部のおみくじを改良してみた.
今回は日付とユーザを識別し,
1日に何回アクセスしても運勢が変わらないようにした.

まず,日付とユーザ情報は以下のコードで取得できる.

// 年月日とIPアドレスを取得する
$today = date(”Ymd”);
$ip = $_SERVER[”REMOTE_ADDR”];

次に,上記情報を用いて乱数値を取得する.
今回は乱数としてハッシュ値を用いた.
各運勢には得られたハッシュ値を分割したものを与える.

// ハッシュ値から運勢を決定する
$hash = @md5($today . $ip);
$work = @mb_substr($hash, 0, 8);
$love = @mb_substr($hash, 8, 8);
$money = @mb_substr($hash, 16, 8);

ハッシュ値は16進数となっており扱いにくいため,10進数に変換する.

// 16進数を10進数に変換する
$work = intval($work, 16);
$love = intval($love, 16);
$money = intval($money, 16);

あとは適当な評価関数を設定して運勢を決定する.
いろんな運勢がまばらに出るようにバランスを取るのが難しいが,
プログラム自体は上記のように簡単に作成できる.
お試しあれ.

Posted in PHP


(comments are closed).