2012-03-14 6 views
2

私は、2つのアプリケーションウィンドウ(またはタブ)を開く可能性を避けたいと考えています。アプリ(LAMP + Javascript)がhttp://www.domain.comにインストールされており、ユーザーがページhttp://www.domain.com/user/を閲覧している場合は、 http://www.domain.com/system/のような別のウィンドウを開きます。彼/彼女が別のウィンドウを開くと、アプリケーションにエラーメッセージが表示されます。2つのブラウザウィンドウを開くことを避けるには?

これは可能ですか?

好奇心が強い人のため:私のアプリはいくつかのセッションデータを使用して一連のアクションを特定するため、この動作が必要です。ユーザーが同じブラウザで新しいウィンドウを開くと、通常はすべてが正しいですが、新しいシーケンスを開始すると、前のウィンドウが失われます。

答えて

2

誰かがあなたのウェブサイトを2度開くのを防ぐことはできないと言っているのは間違いありませんが、回避策があるかもしれません。これは100%の解決策ではないため、これに基づいてさらにコードを開発する必要があります。ユーザーがセッションデータを共有ウィンドウ/タグ(Chromeですなわち二つのタブ、2つのクロム窓があなたのページを開いているかどうかを判断するためにどのように

  1. :私の知る限りでは、次の問題を抱えて理解し

    等) - それは最も簡単な部分です。

  2. ユーザーがあなたのページを別のブラウザで開いている(つまり、一度にFF &のChromeで開いている)かどうかを判断する方法 - それは難しいことです。

ただし、これを行うにはLSO - Local Shared Objectsを使用できます。これらはクライアント側で保存されたFlashベースのクッキー類似データです。それらはCROSS-BROWSER &クロスドメイン互換です。 hereを使用するには、EVERCOOKIEという素晴らしいライブラリがあります。

このようなCookieを設定すると、新しいウィンドウを開く場合でも、別のブラウザでページを開いても、ブラウザが同じFlashインストールを共有している場合でも、ユーザーを追跡できます。

これは、誰かが2つのウィンドウを直接開いてしまうことを防ぐものではありませんが、他のウィンドウと同じシーケンス状態に彼を送ることができることに注意してください。

また、これは100%の解決策ではないことに注意する必要があります。私は普通のユーザーはそれを得ることができないと思うが、これを回避するためのいくつかのトリックが常にあるだろう...

2

あなたはできません。誰かがあなたのウェブサイトを2度開くことを禁止します。

あなたは、私がこれをやって考えることができる唯一の方法は、ユーザあればコンテンツを削除/非表示にすることで、各ページのための新しいセッションキーを使用することによってかもしれませんが、それはビットハンカチを得ることができる...

1

ユーザーがログイン...と、ユーザーがログアウトしたときc)のレコードが

が残っていたときにどこかに記録され

は、だから、a)にログインするために...と、b)レコードを、ユーザが必要になりますこの方法の問題 - ユーザーがいつブラウザを閉じたのかを決定し、「ログオン」リストから削除する必要がある場合...

答えは簡単です。

2

上記のように、誰かがあなたのウェブサイトを2度開くのを防ぐことはできません。しかし、あなたの問題は、私が見るように、実際にはすべてのブラウザセッションが一意であることを確かめることです。これに到達するには多くのアプローチがありますが、クライアントが乱数を生成し、ajax経由でバックエンドに送信してsession-idの代わりに使用すると、いくつかの永続性の問題が生じる可能性があります。タックル。

0

私はサーバ側のセッション(すなわちphp)を使って行い、loadとwindow.unloadイベントを利用してセッションを設定して破棄します。

セッションがすでに作成されている場合は、セッションがその値を確認し、エラーメッセージを表示した後で強制終了する必要があります。

関連する問題