【问题标题】:how to prevent opening another tab in same browser session with php or javascript?如何防止在同一浏览器会话中使用 php 或 javascript 打开另一个选项卡?
【发布时间】:2015-05-10 08:20:45
【问题描述】:

我想知道如何防止用户在他/她仍然打开以前的浏览器实例时打开新标签?

我的目的是防止覆盖数据。 例如,如果用户在同一个应用程序中打开一个新选项卡,我想提示类似

的消息

“您正试图在同一个应用程序中打开一个新的活动窗口。请关闭上一个窗口。”

有没有办法用 php、javascript、session 或 cookie 来实现?

【问题讨论】:

    标签: javascript php session cookies


    【解决方案1】:

    我想我会在 PHP 中使用会话信息...当用户打开一个选项卡时,将它的选项卡添加到会话中。如果它已经加载了该选项卡,请提出问题。棘手的部分是要知道用户何时停止使用您的应用程序或只是闲置。

    您永远无法阻止用户在其浏览器中打开新标签页,但您可以阻止应用中的信息传递给用户。您也可以使用 cookie,但如果不需要记住比会话更长的时间,我认为没有意义。

    如果您想使用 JavaScript 而不是 PHP 进行检查,您还可以查看 HTML5 网络存储。它适用于 IE8 及更高版本。它只是一个键/值数据库。

    【讨论】:

      【解决方案2】:

      只要它是同一个浏览器窗口,您就不能说用户是打开了一个新标签,还是只是在同一个标​​签上加载了页面。即使在private modeincognio mode 中,标签也会共享会话。

      会话依赖于 cookie,其中 cookie 可以比会话更持久。同样的问题。

      您可以做的是防止用户在之前的会话仍然有效时再次登录,但这将在用户打开新的浏览器窗口(或其他浏览器)并尝试登录时起作用。

      【讨论】:

      • 以下链接显示了如何跟踪它sites.google.com/site/sarittechworld/track-client-windows 但我不熟悉.Net。根据他的解决方案,我认为PHP可能也有解决方案。
      • 是的,这可行,但您需要问自己一个问题。这是安全问题吗?因为使用 JavaScript 来保证安全性很糟糕。每个人(尤其是那些想要突破安全的人)都可以操纵或禁用 JavaScript(和 cookie)。依赖它是个坏主意。如果不是出于安全考虑,请继续执行链接下所说的操作(TL;DR; - 设置 cookie,如果设置了 cookie,则在 PHP 中不显示内容,在 JS 事件“onbeforeunload”时删除 cookie。)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 2015-03-25
      • 1970-01-01
      相关资源
      最近更新 更多