阻止用户打开同一网站PHP的多个实例

时间:2016-06-15 08:45:28

标签: javascript php browser tabs

我只需要一个可访问我网站的标签。当他尝试在新标签页中打开或甚至尝试在新标签页中复制并粘贴网址时,应清除用户的会话并从应用程序注销。

有几个原因,

  1. 当用户打开连接到同一应用程序的新选项卡时 - 会话ID是相同的。
  2. 想象一下,此用户已从第一个选项卡到达应用程序流中的页面X.
  3. 当他打开第二个标签时,他可能处于下列情况之一 - 取决于第二个标签的打开方式 - 新标签,重复标签(这会将URL复制到新打开的标签页)或新会话。 所有上述内容都会让人感到困惑"服务器关于应用程序的下一个有效状态是什么,并且可以覆盖在不同选项卡中输入的数据,而无需他/她的知识 我想要的是阻止单个用户在同一个会话中拥有多个选项卡,即每个会话每个用户只有一个选项卡/窗口。
  4. 登录后在dashboard.php中包含以下脚本

    Match 1
    status -> down
    service_name -> worker-test-4
    seconds -> 9
    
    Match 2
    status -> down
    service_name -> worker-test-5
    seconds -> 9
    
    Match 3
    status -> down
    service_name -> worker-test-6
    seconds -> 9
    

    应用程序中其他子页面中的代码

    <script>
    $(document).ready(function()
    {
        if(typeof(Storage) !== "undefined") 
        {
            if (sessionStorage.pagecount) 
            {
                sessionStorage.removeItem('pagecount');
                window.location='logout.php';
            } 
            else
            {
                sessionStorage.pagecount = 1;
            }
        } 
        else 
        {
            sessionStorage.removeItem('pagecount');
            window.location='logout.php';
        }    
    });
    

2 个答案:

答案 0 :(得分:2)

登录后添加以下脚本(例如dashboard.php)

<script>
$(document).ready(function()
{
    $("a").attr("target", "");
    if(typeof(Storage)              !== "undefined") 
    {
        sessionStorage.pagecount    =   1;
        var randomVal               =   Math.floor((Math.random() * 10000000) + 1); 
        window.name                 =   randomVal;
        var url                     =   "url to update the value in db(say random_value)";
        $.post(url, function (data, url)
        {
        });
    } 
    else 
    {
        var url                     =   "url to remove random_value";           
        $.post(url, function (data, url)
        {
            sessionStorage.removeItem('pagecount');
            sessionStorage.clear();
            window.location         =   'logout.php';
        });
    }    
});
</script>

在我的其余页面的标题中添加了以下脚本 - 'random_value'来自该用户的数据库

<script>
$(document).ready(function()
{       
    $("a").attr("target", "_self");

    if(typeof(Storage)                      !== "undefined") 
    {
        if (sessionStorage.pagecount) 
        {
            if('<?=$random_value?>'         ==  window.name)
            {
                sessionStorage.pagecount    =   Number(sessionStorage.pagecount) + 1;
            }
            else
            {
                var url                     =   "url to remove random_value";           
                $.post(url, function (data, url)
                {
                    sessionStorage.removeItem('pagecount');
                    sessionStorage.clear();
                    window.location         =   'logout.php';
                });

            }               
        } 
        else 
        {           
            var url                         =   "url to remove random_value";           
            $.post(url, function (data, url)
            {
                sessionStorage.removeItem('pagecount');
                sessionStorage.clear();
                window.location             =   'logout.php';
            });
        }
    } 
    else 
    {   
        var url                             =   "url to remove random_value";                   
        $.post(url, function (data, url)
        {
            sessionStorage.removeItem('pagecount');
            sessionStorage.clear();
            window.location                 =   'logout.php';
        });
    }   
});
</script>

答案 1 :(得分:0)

&#13;
&#13;
<script>
$(document).ready(function()
{
    $("a").attr("target", "");
    if(typeof(Storage)              !== "undefined") 
    {
        sessionStorage.pagecount    =   1;
        var randomVal               =   Math.floor((Math.random() * 10000000) + 1); 
        window.name                 =   randomVal;
        var url                     =   "url to update the value in db(say random_value)";
        $.post(url, function (data, url)
        {
        });
    } 
    else 
    {
        var url                     =   "url to remove random_value";           
        $.post(url, function (data, url)
        {
            sessionStorage.removeItem('pagecount');
            sessionStorage.clear();
            window.location         =   'logout.php';
        });
    }    
});
</script>
&#13;
&#13;
&#13;