关于js的cookie设置问题

发布于 2022-09-05 23:38:14 字数 1377 浏览 18 评论 0

我用的是CI框架,我的业务是这样子的:做一个网站,有中文和英文两个版本,通过点击切换按钮来设置cookie,然后PHP读取cookie来判断读取中文数据还是英文数据。但是查看了chrome的cookie,有的网页却发现有两个相同name值的cookie,只是路径不一样。截图如下:
图片描述

以下是PHP读取的代码,用的是ci框架本身的方法:

$lang = trim($this->input->cookie('lang', true));

以下是js初始化页面的时候设置的代码:

var cookie_lang = getCookie('lang');
if (cookie_lang == null) {
    setCookie('lang', 'ch')
}

以下是点击按钮切换cookie的代码:

var lang = getCookie('lang');
if (lang == 'ch' ) {
    setCookie('lang', 'en')
} else if (lang == 'en' ) {
    setCookie('lang', 'ch')
}

以下是设置cookie的函数:

function setCookie(name,value) {
    var expiredays = 7;
    var ExpireDate = new Date ();
    ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
    var host = document.domain;
    
    document.cookie = name + "="+ escape (value) + "; expires=" + ExpireDate.toGMTString() + "; domain=" + host
                    + "; path=/";
        }

以下是获取cookie的函数:

function getCookie(name) {
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg)) {
        return unescape(arr[2]);
    } else {
        return null;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

看轻我的陪伴 2022-09-12 23:38:14

您无论实在php层面setcookie还是在js层面setcookie的时候,全部将path设置为/根路径;然后你再来测试下看看是不是都好了;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文