检查Cookie是否仍然有效

时间:2016-01-13 13:25:20

标签: javascript php jquery cookies

在我们的Intranet中,每个用户都可以登录,并在用户成功连接时创建cookie

setcookie('id_user', $res['id_user'], time()+600, '/');
setcookie('email', $res['mail'], time()+600, '/');
setcookie('firstname', $res['firstname'], time()+600, '/');
setcookie('lastname', $res['name'], time()+600, '/');

他们将在10分钟后过期。

我有很多页面,其中js函数正在使用$_COOKIE变量。 我不想检查$_COOKIE是否为每个函数都为空。

有没有办法触发js函数检查cookie是否仍然可用?

我试过这个

var user = '<?php echo $_COOKIE['id_user']; ?>';

function check()
{
    if(user === null)
    {
        console.log('logged');
    }
    else
    {
        console.log('disconnected');
    }
}

check();
setInterval(check, 1000);

但它没有奏效。我在访问此页面之前已连接。控制台始终显示已连接的&#39;即使我从另一页断开连接。我认为cookie仍然存在于页面中并且没有过期。

如果在访问页面之前我没有连接,则js错误告诉我

SyntaxError: unterminated string literal


var user = '<br />

1 个答案:

答案 0 :(得分:1)

我使用以下js管理了这个。如果cookie仍然可用,此代码将每秒检查一次。

function check()
{
    var user = getCookie('firstname');

    if(user == '')
    {
        console.log('disconnected');
    }
    else
    {
        console.log('connected');
    }
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
    return "";
} 

check();
setInterval(check, 1000);