人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

掲示板を運用しているのですが、
コメントを書き込んで確認画面を出した後、
IEの戻るボタンでページを戻ると、
「Web ページの有効期限が切れています」と表示されて
書き込んだ内容が全て消えてしまいます。

ヤフー知恵袋でも同様の現象が起こるのですが、
http://chiebukuro.yahoo.co.jp/

例えば、この人力検索はてなのように
ブラウザのbackボタンで戻っても
書き込んだ内容がそのまま残る掲示板もあります。

うちの掲示板もbackボタンで戻っても
書き込んだ内容がそのまま残るようにしたいのですが、
どのような対策が必要になるのでしょうか?

なお、掲示板はPHP+MySQLで運用しています。
よろしくお願いいたします。

●質問者: hatikuro109
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
ベストアンサー

二重投稿などの意図せぬ投稿を防ぐための手段として、
WEB製作者がキャッシュを持たせないような施策をしていたりすると、
『Web ページの有効期限が切れています』となります。
(ブラウザによって文言は変わります。)

困ったことに人力検索は有効期限による施策を用いていないため、
同じ質問を二つも三つもしてしまう人がいます…。
無料質問導入前には多重投稿防止策がこうじられていたはずなのですが、
今は未対応になってシステム的には逆行してますね…。


さて、phpの場合ですが、
設定確認や変更は session_cache_limiter で行います。

設定対象有効期間の有無
nocache(デフォルト)キャッシュを許可しない-
publicクライアント及びプロクシあり
privateクライアントのみあり
private_no_expireクライアントのみなし

有効期間の設定は session_ cache_ expire で行います。

有効範囲をサイト全体にする場合はphp.iniにて上記の設定を施します。

ページ単位であるならばphpファイルの冒頭で用います。
http://php.net/manual/ja/function.session-cache-limiter.php

<?php
session_cache_limiter('private_no_expire');

古い環境にも対応させたい場合はヘッダーで細かい設定を送り返すようにします。
http://jp2.php.net/manual/ja/function.header.php

<?php
$cache_expire = session_cache_expire() * 60;
header('Pragma:');
header('Expires:');
header("Cache-Control: private, max-age=$cache_expire, pre-check=$cache_expire");
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');

長々と書きましたが、
サイト構築・運営の手間削減と、二重投稿防止に寄与することなので、
仕組みを理解したうえでデフォルトのまま使う事をお勧めしたいですね。


質問者から

返信が遅くなり申し訳ございません。
詳しく説明をして頂き本当にありがとうございました!


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ