- PR -

さんざん既出の「戻る」ボタンの制御について

投稿者投稿内容
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-07-12 10:51
いつも参考にさせていただいております。
現在、ASP.NETとC#にてWebアプリを開発中です。

過去ログも拝見しましたが、ここでも再三取り上げられているIEの「戻る」ボタン
の制御についてアドバイスをいただけたらと思っております。

私のところでもこの辺は運用でカバーしてもらうということで、
画面上に「戻るボタンの使用は禁止」等のラベルを目立つように貼り付けていたのですが、
それでも使用してしまった人がおり、しかも更新系の処理を行いデータに不整合が出てしまうということが発生しました。

もちろん、その場合でも不整合が起こらないような作りにしておくことが大前提なのでしょうが、
お客様が使用している市販のパッケージのWebアプリでは、戻るボタンをクリックすると、
メッセージボックスが出て強制的にログイン画面に戻るそうで、同じような処理はできないものかと言われております。

過去ログを拝見している限りでは、そのような処理は無理なように思われますが、
このような事は可能なのでしょうか?
これらの動きはクライアントサイドでの処理なのですよね?(JavaScript等)
過去ログにあった
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6531&forum=7
SessionとViewStateの両方にカウンタを保持してポストバック毎にインクリメントし、
双方の値が一致するかどうかをチェックする方法とは、サーバーサイドでのチェックだと思うのですが、
この辺についてもう少し詳しくわかる方がいればアドバイスいただきたいです。

結局、なんらかの方法で戻るボタン等、キャッシュが使用された画面遷移時には
更新系が行えないようになればよいだけだと思います。
metaタグも組み込みましたが、完全ではありません。
多少見苦しくてもかまわないので、何か逃げる方法はありませんでしょうか?

長くなりましたが、何卒、宜しくお願いいたします。

餅宮餅吉
ベテラン
会議室デビュー日: 2005/03/04
投稿数: 57
お住まい・勤務地: 月餅のうまい店の隣
投稿日時: 2005-07-12 10:58
おはようございます、餅宮です。

前のページのURL確認するだけじゃだめですかね?
処理の流れでは、ダメかもしれませんが。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-07-12 10:59
1つの案

Sessionに直前のページ名を記憶しておくとか。

_________________
たつごろー
codeseek
こみゅぷらす
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-07-12 11:12
餅宮さん、たつごろーさん、早速のご回答ありがとうございます!

餅宮さん

>前のページのURL確認するだけじゃだめですかね?

これは、クライアントサイドで確認するのでしょうか?
OnLoadイベントか何かでしょうか?

たつごろーさん

>Sessionに直前のページ名を記憶しておくとか。

これはサーバーサイドでの処理でしょうか?
戻るボタンクリック時は、サーバーには処理は行かないと思うのですが・・・。
お手数でなければ、具体的にはどのようにチェックするのか
教えていただけないでしょうか?

度々ですが、宜しくお願いいたします。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-07-12 11:16
これは試してないです
キャッシュをやめられないかためす
Scriptで強制的にPostBackさせる

_________________
たつごろー
codeseek
こみゅぷらす
MERCY
会議室デビュー日: 2005/07/12
投稿数: 18
投稿日時: 2005-07-12 11:19
汚いやり方でも良くて、クライアントサイドでどうしても・・・・って事なら
フレームを100%と*で作成して、JavaScriptを使用して別ページにリロード毎にカウントアップするSession変数を書き込む
で、書き込もうとする変数と、既に有る物を比較して減ってたら
JavaScriptでTOPに飛ばしちゃえば問題ないかと
Moo
大ベテラン
会議室デビュー日: 2004/04/12
投稿数: 118
お住まい・勤務地: 地球・港
投稿日時: 2005-07-12 11:24
CookieとJavascriptで実現してはどうでしょうか?
A->B->Cと遷移をする場合に
遷移元ページIDを遷移先ページでクッキーに格納。
ページロード時にはJAVASCRIPTにて現在ページと遷移元ページを比較

_________________
ASP/ASP.NETだいすき。 ASP++ by Moo http://moo-asp.net/
日記は ほぼ毎日更新中 http://d.hatena.ne.jp/aspx/
コナン
ベテラン
会議室デビュー日: 2005/01/31
投稿数: 98
投稿日時: 2005-07-12 11:30
キャッシュ対策なんですけど、

1.始めのページに空のhiddenを用意して、hiddenが空の時だけ表示されるようにします。
2.次のページに移動するときに、そのhiddenに何か適当な値を入れます。
3.次のページで戻るボタンを押したとき、前のページがキャッシュで表示された場合は、
  hiddenの値も残っているので、1.の状態と区別できます。

というのはどうでしょうか。
以前作ったとき、IEなら動いてました。

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