[PHP-users 2173] Re: ブラウザのキャッシュについて

Yasuo Ohgaki php-users@php.gr.jp
Wed, 19 Sep 2001 12:49:14 +0900


大垣です。

> 掲示板を作成しておりまして、ログファイルへの登録・読み込みは
> スムーズに出来たのですが、書き込み直後にブラウザの「更新」ボ
> タンを押しますと直前に書き込まれた情報がログファイルに書き込
> まれてしまいます。
>
> PHP-userや旧PHP-jpを見たのですが、
>   header("Cache-Control: no-cache, must-revalidate");
>   header("Pragma: no-cache");
> を使われて回避するパターンが多く見受けられました。
> 私も同様に使用してみたのですが何ら変化は見られなく、途方に
> くれています。
> 当然ながら<meta>タグを使用しても同様です。
>
> クッキーを使わない掲示板を目指している故に全てをブラウザの
> キャッシュに任せる方向で作成していますが、ブラウザの更新に
> ついては頭を悩ませています。

私は自前のFormクラスで各フォーム毎にIDを割り当てDBに記録し、フォームが
サブミットされる度にDBへ送信されたIDを利用して送信された情報のMD5ハッ
シュを記録して同じ情報の再送信を防いでいます。

$md5 = get_md5_value_this_form_id($HTTP_POST_VARS['FID']));
if ($md5 == $md5(serialize($HTTP_POST_VARS)) {
  print('Data sent already. You are not supposed to submit the same
data.');
}

のような感じです。コンカレンシーを考えて、DBに確認・登録する順序に注意
するか、トランザクションを利用する必要があります。そうしないと意味があ
りません。

ブラウザ(Cookie,HTTPキャッシュコントロール)に頼るより信頼性は高いで
す。

--
Ohgaki, Yasuo (大垣 靖男) 
Mail: yohgaki@dd.iij4u.or.jp