关于js的cookie设置问题

我用的是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;
    }
}
阅读 3k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题