【问题标题】:Check if cookie is still valid检查cookie是否仍然有效
【发布时间】:2016-04-18 11:59:50
【问题描述】:

在我们的内网中,每个用户都可以登录,并在用户成功连接时创建 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);

但它没有奏效。当我在访问此页面之前连接时。即使我从另一个页面断开连接,控制台也始终显示“已连接”。我认为 cookie 仍然存在于页面中并且没有过期。

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

SyntaxError: unterminated string literal


var user = '<br />

【问题讨论】:

  • “未终止的字符串文字”是 PHP 首先吐出错误消息的结果 - 检查页面源代码。除此之外,不清楚你在问什么。
  • Javascript 可以直接访问浏览器中的 cookie,无需使用 php(它只在页面加载前运行一次,因此会出现问题)。此外,您在过去 24 小时内还有 2 个其他 SO 问题,您没有回复任何 cmets 或答案。这不是 SO 的工作原理,如果您想要体面的答案,您需要与人们互动
  • @CBroe 是因为PHP变量不存在
  • @Raccoon:我知道——你的工作是在尝试输出之前检查
  • @Steve: “Javascript 可以直接访问浏览器中的 cookie” – 除非它们是由服务器使用 httpOnly 设置的。

标签: javascript php jquery cookies


【解决方案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);

【讨论】:

  • 为什么要每秒检查一次?在新请求后检查它更实用。
  • @Schellingerht 如果用户在 cookie 过期之前什么都不做,然后使用请求怎么办?您应该在每个功能之前检查它是否正确。如果您只有
猜你喜欢
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多