• ベストアンサー

書き換え防止機能

CGIでアンケートを作っている者です。 フォームから<input type "submit">のボタンでアンケートを送信後、お礼をいうページ(違うページに行ってもらうようリンクが張ってある)にいくのですが、このあと「戻る」ボタンで戻ってアンケートを直してまた送信、なんて事をさせないようにしたいのです。 ブラウザで「戻る」とアラートで「情報を再送信しないと…」とかいうのが出るページを見たことがあります。どうすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • panick
  • ベストアンサー率40% (26/64)
回答No.1

onload="location.replace()" を使って、[戻る]ページの履歴を削除させる方法を利用すればよいと思います。 アンケート・フォームのCGIから下記のようなダミー・ページ「dummy.html」を経由してお礼のページ「thanks.html」を表示するようにすると、プラウザの[戻る]ボタンが無効になりアンケート・フォームへは戻れなくなります。 ------------------------------------------- dummy.html <html> <head><title></title><meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"></head> <body bgcolor="#FFFFFF" text="#000000" onload="location.replace('thanks.html')"></body> </html> -------------------------------------------------------

bubibabe
質問者

補足

そのように試したのですが、普通に戻ることができてしまいました。どうしましょう?

その他の回答 (3)

回答No.4

ほそくですけど、IEよりネットスケープの方が 元にもどれますよね? やはりIP等で確認して、二重投稿は避けた方が 賢明かもしれません。

回答No.3

Location: だと、前のアドレスに戻れない って書いてあるけど、わたしもローカルだと 戻れちゃいますねー。 ノーキャッシュにすれば、効果もあるかも? 私がどうしてもそうするなら、やっぱり下の人の ように、クッキーを使うかなー。 必須の名前があったら、不正ページにとばす、方法。 他にも、同一人物を特定(できる可能性のある)IPとか、 名前も控えておいて、同じものがあれば、不正ページに。 でも、クッキーは消されたらダメ。 IPも変更されたり、プロクシ使われたらダメ。 名前も変えたらダメ。 完全に相手を特定する方法は、今の所ないですよー。 ♪2重投稿はしないでね。  IPで分かりますよ。♪ って書いた方が効果があったりします。

参考URL:
http://www.bayashi.net/st/pdmemo/browsercache.html
回答No.2

アンケートフォームとお礼ページのあいだに自動ジャンプするページを置き、アンケートを送信するといったんそのページにアクセスしてからお礼ページに飛ばす、というのはどうでしょう。 ブラウザの「戻る」を押してもまたすぐにお礼ページに戻ってきます。 #「戻る」をすばやく2回押したり、戻るボタン横の▼を使って戻ったり、履歴を使われると駄目なのですが……。 また、アンケートを送信した際にCookieに送信済みと記憶させ、再び送ろうとしたときにCookieを判定して送信済みならエラーを出す、という方法も考えられます。

関連するQ&A