Cookie

[php + js]読み終えたページによって登場人物紹介ページの内容を変える

2010/01/25 Javascript No comments , ,

質問サイト見てたら面白いネタを発見!

私は今、長編小説をHPに公開しようと思っています。
キャラクター紹介のページを作ろうと思っているのですが、
読んだ読者さんによって表示される内容を変えたいのです。
例えば第一章で登場するAとBというキャラがいたとします。
読者さんが第一章を読んだらキャラ紹介のページにAとBのキャラクターの紹介が加わる。
という形にしたくて、cookieを使用しようと思うのですが、
なにぶんこのような操作ははじめてでしてどうしたらよいのかわかりません。
各章の最後のページにクッキーを食べさせるjavascriptを書いて、
キャラ紹介のページでクッキーを読み込み、キャラの説明文を表示したいです。

物語が進むにつれて、他キャラが増えたり、説明文に追記が加わるようにするにはどうしたら良いでしょう。
cookie使用があまりなく、調べましたがよくわかりませんでしたので詳しく教えていただけましたら幸いです。

独自CGI作ってもよさげな発想だと思ったんだけど、PHPとJavaScript使えば比較的簡単に出来るので、
デモとサンプルソース晒しときます。

ページ構成と概要

  • index.html
    小説のトップページ(つまり1ページ目 or 第一章)
  • 2.html
    2ページ目 or 第二章(以降、ページまたは章と同じファイル名で連番にする)
  • cast.php(cast.html)
    キャラクター紹介ページ
  • mychar.js
    クッキー発行スクリプトファイル

トップは1.htmlでもindex.htmでも何でもいいですが、
2ページ目より後のページを 番号+拡張子 にします。

サンプルはこちら

(さらに…)

[PHP]フォームの2重送信防止をCookieで行うサンプル

2009/03/06 PHP 5 comments

2重送信防ぐ方法でセッションにワンタイムパスワードみたいなの保存しとく方法があけど、
セッション使いたくないなーと思った時は変わりにCookieに保存しとくっていう手もある。
1ページ完結のスクリプトだと特にheader()で飛ばすとエラー出る事もあるので結構便利だと思う。

1、フォームのheddenでトークンIDをセット。IDは表示されるたびに入れ替わる。

print '<input type="hidden" name="ticket" value="'.getTokenId().'" />'."\n";

2、保存とか送信とかが成功した時点でPOSTされたトークンIDをCookieに保存するようにして

$ticket = $_POST["ticket"];
setNewCookie("sample_ticket",$ticket,time()+(3600*24*30));

3、Step2の前のタイミングでPOSTをチェックして、保存されたチケットとPOSTされたチケットが同じなら弾くようにする。

if($_POST[ticket] == $_COOKIE["sample_ticket"]){
	print "不正な送信です";
}

▼サンプルソースの関数

//トークン用ID発行
function getTokenId(){
	return substr(md5(uniqid().mt_rand()),-13,10);
}
//クッキー発行
function setNewCookie($name, $value, $time){
	return setcookie($name, $value, $time);
}

セッションの場合もやり方は同じ。