Browser 是否限制客户端访问具有1个选项卡和1个浏览器的网站?

Browser 是否限制客户端访问具有1个选项卡和1个浏览器的网站?,browser,web,limit,Browser,Web,Limit,我想做一些类似play.clubpenguin.com的事情 它的作用是,当您访问该站点时,可能使用firefox或IE,如果您打开了新选项卡或使用其他浏览器,当您再次访问该站点时,它将显示类似“请关闭打开此页面的其他浏览器”之类的内容 如何做到这一点?(客户的要求) 更多信息:该网站是Flash网站 编辑: 好的,我认为这是一个很难回答的问题,好吧,一般来说,这可以用php、mysql和JS来完成吗?我想到了一些选项 当他们第一次打开站点时,您需要将用户的当前状态存储在cookie或类似文件中

我想做一些类似play.clubpenguin.com的事情

它的作用是,当您访问该站点时,可能使用firefox或IE,如果您打开了新选项卡或使用其他浏览器,当您再次访问该站点时,它将显示类似“请关闭打开此页面的其他浏览器”之类的内容

如何做到这一点?(客户的要求)

更多信息:该网站是Flash网站

编辑:


好的,我认为这是一个很难回答的问题,好吧,一般来说,这可以用php、mysql和JS来完成吗?

我想到了一些选项

  • 当他们第一次打开站点时,您需要将用户的当前状态存储在cookie或类似文件中,您每次打开站点时都会检查这些文件。如果状态为“活动”,则表示他们打开了另一个窗口。确保在他们离开原始站点窗口时清除状态的问题-您需要监听
    window.onunload事件,并在该点清除状态-但您不能100%保证会发生这种情况
  • 否则,您可以在站点上放置一个脚本,该脚本每n秒ping一个服务器脚本,通知服务器该客户端有一个打开的窗口,并在ping失效之前阻止打开新窗口
  • 为了变得更复杂,您可以在服务器和客户机之间维护一个持久连接(通过套接字或类似方式),这将保持相同的记录。来自客户端的呼叫更少,设置更复杂一些。有关闪存+插座的基本信息,请参阅
  • 如果您正在使用Flash,您可以查看本地共享对象(Flash Cookie)来存储状态。仍然可能错过卸载事件,但至少cookie会在所有浏览器会话和浏览器类型中保持

  • 选项3是最好的IMHO。

    如果您想禁止使用两个不同的登录名进行访问,您可以强制执行锁定给定资源的规则

    客户端IP可以是此可锁定资源之一:一个给定IP地址只允许一个会话。这将减少对拥有多个公共IP地址的人的欺骗。通过代理共享公共IP的人会遇到问题


    我看不出还有什么可以轻松使用的可锁定资源。

    每次向用户提供flash页面时,生成一个随机令牌。将此令牌嵌入页面中的某个位置,例如作为flashVar。另外,将最近生成的令牌存储在用户会话中

    每当flash向服务器发回某些内容时,也要发布令牌。如果令牌与会话中存储的令牌不匹配,请拒绝post

    这样,只有最近生成的页面版本才能与服务器通信,如果用户打开多个版本的页面,则只有最近生成的版本才能工作

    即使用户在其他机器上打开额外的浏览器,这种技术也应该有效。它不使用IP地址来建立身份。而且,用户不可能以某种方式被永久“锁定”,因为每次他们再次打开页面时,您都会重置存储的令牌

    这与一些框架将验证令牌插入表单以防止攻击的方式类似。

    解决方案:


    回答你的客户的请求时用“否”,因为你是网站设计大师,知道什么最适合客户的访问者。网站不一定要吸引你的客户,而是客户的访问者。当他们在自己的电脑上受到如此严格的限制时,他们几乎什么都不满意。

    尝试使用以下代码:

        window.onload = function(){
        if (document.cookie.indexOf("_instance=true") === -1) {
        document.cookie = "_instance=true";
        // Set the onunload function
        window.onunload = function(){
            document.cookie ="_instance=true;expires=Thu, 01-Jan-1970 00:00:01 GMT";
        };
        // Load the application
        }
        else {
        // Notify the user
        }
        };
    

    该代码将限制用户一次打开一个浏览器选项卡,并且在浏览器刷新期间(当前选项卡),该代码不会显示任何警报。在“新建”选项卡中复制粘贴相同的URL将不允许用户打开。有关更多信息,请尝试

    1。我猜在客户端机器上无法跨多个浏览器工作。我也曾想过使用cookie,但后来我也发现了一些问题,如果使用cookie的话。你的第三个选择听起来最好,但我真的不知道如何开始,我的意思是实施它。关于第三个选项,你能说得更具体些吗?@Kumar:你有更好的解决方案吗?@webdever-如果你正在使用Flash和PHP,那么你可能会想看看PHP套接字服务器。有关持久连接的工作原理的示例,请参见。无法删除本地共享对象,尽管这与删除普通cookie有点不同。它仍然可靠吗?是的,我应该向我的客户提出这个想法。Bcuz他们想像clubpenguin那样建模,即当你进入页面,甚至登录页面时,他们会提示你消息并要求你关闭打开它的任何浏览器/选项卡。那么防火墙后面的人呢,所有人都显示在相同的外部IP地址下?从用户角度来看,我在问自己,你为什么要限制用户的能力?
    你为什么要剥夺他们的自由?好吧,这只是一个例子:就像企鹅俱乐部一样,如果你允许多浏览器登录,你可以通过欺骗的方式赚钱,比如说。您以用户A和B的身份登录。A和B进入多人游戏室,用户A站在那里,不让用户B赚钱。这只是其中的一个例子。而且,这不是我的想法,“这是客户的要求”,我在我的问题中也提到了这句话。如果您没有答案,请不要在“答案”字段中回复,请在“评论”中回复。很抱歉出现上限。我现在正在努力解决这个问题。是的,这是客户的要求。但是再进一步想一想,你如何防止某人在两台计算机上这样做呢?考虑到现在创建多个虚拟机是多么容易,这并不少见?他们甚至可以有不同的IP地址…你是说,可以使用php、mysql和js来完成吗??你能不能说得更具体一些,比如怎样做,用什么方法等等?是的,我们不能百分之百地阻止它,我们所能做的就是尽量减少它。饼干可以被清除