セッションを使ったPHP用の簡単なチケット(トークン?)管理クラスを作ってみました。
■2006/02/06追記
バージョンアップしました。詳細はこちらに。
セッションに格納された有効期限を見てるだけなので厳密な処理には向いてないと思いますが、HTML_QuickFormなどのフォームで二重投稿・多重投稿防止とかには使えます。
(あまり賢くないので)これ以上機能拡張するネタが思いつきませんが、何かありますかねえ…。
サンプルコード:
<?php
require_once 'Ticket.class.php';
/**
* コールしないと使えないです
*/
session_start();
/**
* 一意に管理したいチケット名と有効期限
*/
$ticket_name = 'something';
$limit = 300;
if (Ticket::hasTicket($ticket_name) === false) {
/**
* チケット発行
*/
Ticket::generateTicket($ticket_name, $limit);
doSomething1();
} else {
/**
* チケット破棄
*/
Ticket::deleteTicket($ticket_name);
doSomething2();
}
?>