我正在使用codeigniter session 来存储用户登录名。当用户在多个选项卡中打开时,在一个选项卡中注销时,我希望页面在用户访问另一个选项卡时自动刷新。这可能吗?

最佳答案

刚刚对其进行了测试,而我看到的最简单的方法(至少在Chrome中似乎有效,但可能需要进一步测试)是设置cookie。

注销时,执行setcookie('loggedout',1)之类的操作。您还需要在登录时执行相反的操作-unset($_COOKIE['loggedout'])
然后,您只需要一些简单的Javascript ...

function readCookie(name) {
    var nameEQ = escape(name) + "=";
    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, c.length);
        if (c.indexOf(nameEQ) === 0) return unescape(c.substring(nameEQ.length, c.length));
    }
    return null;
}
window.setInterval(function() {
    if(readCookie('loggedout')==1) {
        window.location.assign('loggedout.html')
        //Or whatever else you want!
    }
},1000)

它将每秒检查一次cookie是否已设置。魔法。

09-25 19:19