限制客户访问带有1个标签和1个浏览器的网站?

时间:2009-12-04 07:17:14

标签: browser web limit

我想做像play.clubpenguin.com这样的事情。

它的作用是,当您访问该网站时,可能使用Firefox或IE,如果您打开新标签或使用其他浏览器,当您再次访问该网站时,它将显示如下内容:“请关闭其他打开此页面的浏览器“或类似的东西。

怎么做? (其客户的要求)

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

编辑:

好吧,我认为这是一个棘手的问题,一般来说,这可以用php,mysql和JS完成吗?

5 个答案:

答案 0 :(得分:7)

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

每当Flash将某些内容发回服务器时,也会发布令牌。如果令牌与会话中存储的令牌不匹配,请拒绝该帖子。

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

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

这与某些框架将验证令牌插入表单以防止Cross-site Request Forgery攻击的方式类似。

答案 1 :(得分:2)

尝试使用以下代码:

    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
    }
    };

代码将限制用户一次打开一个浏览器选项卡,在浏览器刷新(当前选项卡)期间,代码不会显示任何警报。在新标签页中复制粘贴相同的网址将不允许用户打开。有关详细信息,请尝试this

答案 2 :(得分:0)

有些选择让人想起......

  1. 当他们第一次打开网站时,您需要将用户的当前状态存储在cookie或类似内容中,每次打开网站时都要检查该状态。如果状态为Active,则表示它们打开了另一个窗口。确保状态在离开原始站点窗口时被清除的问题 - 您需要监听window.onunload事件,并在此时清除状态 - 但您不能100%保证这将是发生。
  2. 否则,您可以在网站上放置一个脚本,每隔 n 秒对服务器脚本进行ping操作,通知服务器有一个为该客户端打开的窗口,并防止新窗口被打开,直到有在平时失效。
  3. 为了变得更复杂,您可以在服务器和客户端之间保持持久连接(通过套接字或类似方式),这将保持相同的记录。来自客户端的呼叫较少,设置起来有点复杂。有关flash +套接字的基本信息,请参阅http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm
  4. 鉴于您正在使用Flash,您可以查看本地共享对象(Flash Cookie)来存储状态。仍然可能错过卸载事件,但至少cookie会在所有浏览器会话和浏览器类型中保留。
  5. 选项3是最好的恕我直言。

答案 3 :(得分:0)

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

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

我没有看到您可以轻松使用的其他可锁定资源。

答案 4 :(得分:-1)

解决方案:

回答客户要求的NO,因为您是网站设计大师,知道客户访问者的最佳选择。该网站不必吸引客户,而是客户的访客。当他们在自己的计算机上受到如此严重的限制时,他们就会感到很满意。