- PR -

F5と戻るボタンを見分けるには

1
投稿者投稿内容
MyToy
会議室デビュー日: 2006/08/15
投稿数: 5
投稿日時: 2006-09-08 22:08
VS2005 VB.NETで開発しています。

Page_Load時にF5時のイベントか戻るボタンのイベントかを見分けたいのですが
どうすればよいでしょうか?
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-09-08 22:31
Web アプリケーションですね?
「(ブラウザの)戻る」ではサーバーにリクエストが来ないので、そもそも「戻った」というのが分かりません。
_________________
囚人のジレンマな日々
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-08 22:33
何がしたくて、どうしたらいいと判断したので、この質問にいたったのでしょうか?

たぶん、「2重登録」あたりをキーに検索すると、答えは出てくると思う。
MyToy
会議室デビュー日: 2006/08/15
投稿数: 5
投稿日時: 2006-09-08 22:44
説明が足りなくてすみません。

ご察しのとおり、Webアプリでの「2重登録」制御のためです。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-08 22:46
ほい
http://blogs.wankuma.com/jitta/archive/2005/11/18/19447.aspx
MyToy
会議室デビュー日: 2006/08/15
投稿数: 5
投稿日時: 2006-09-08 22:58
今は、セッションIDで再読み込みかを判断しているのですが
F5で再読み込みされたか戻るボタンで再読み込みされたかを
判断したいのですが・・・
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-11 21:50
引用:

MyToyさんの書き込み(2006-09-08 22:58)より:

今は、セッションIDで再読み込みかを判断しているのですが
F5で再読み込みされたか戻るボタンで再読み込みされたかを
判断したいのですが・・・


 囚人さんのレスを、ちゃんと読まれましたか?
『「(ブラウザの)戻る」ではサーバーにリクエストが来ないので、そもそも「戻った」というのが分かりません。』

 「戻る」ボタンをクリックした場合、ブラウザは、自身が持つキャッシュの内容を表示します。クライアントで操作が完了しています。
 サーバにはたくさんのリクエストが送られてきます。それらのリクエストの履歴を持つことなんて、とてもじゃないが、出来ません。ですから、サーバでは「戻った」ことがわかりません。


 おそらく、『「戻る」で戻った後にもう一度「登録」ボタンを押されたとき』だと思いますが、それならばそう、きちんと書いてください。
 これは、回答者のためではなく、あなたがプログラムを書くためです。人間は、こういう曖昧なことを、経験などから類推して理解してくれますが、コンピュータにはそれは出来ません。自分がしたいことの手順を、コンピュータが理解できるところまで細かく砕いて、正しい順序に不足なく並べなければなりません。


 で、本題。
 本題だけど、脇道。考え方が足りません。実際にそのような操作をしたから、その対策を考えているのだと思います。では、もうひとつ考えられる状況を提示します。

登録画面を開きます。(仮に、画面1とします)
「ファイル」メニューの「新規ウインドウ」(あるいは [CTRL]+[N])により、登録画面のコピーを作ります。(仮に、画面2とします)
画面1と、画面2で、同じ内容を書き込みます。
画面1を登録します。
画面2を登録します。

さて、どの様な結果を望みますか?

 とりあえず、私が思いついているのはこの3パターン(リロード、戻って再登録、複製)なのですが、他のパターンがないとはいえません。それぞれのパターンについて、別々に対応するのでしょうか?

 ユーザの操作ではなく、「サーバに送られてくる内容」によって分類する方が、未知の操作パターンにも対応できると思うのですが、いかがでしょうか。

 もし、ユーザ要望で「リロードと戻って再登録で、メッセージを分けろ」といわれているのなら、
「セキュリティ リスクを考えると、この2つは同じことであり、未知の操作パターンにも対応するために、同じものとして扱いたい」
と、説得してください。Windows アプリケーションのテクノロジと、Web アプリケーションのテクノロジは、まったく違います。Win. での考え方を Web に、そのまま持ってくることは出来ません。

 なお、リロードは防げませんが、戻るはキャッシュ有効期限を短くすることで「戻れなくする」ことは出来ます。
1

スキルアップ/キャリアアップ(JOB@IT)