由javascript设置的cookie无法检索

时间:2016-09-14 02:02:23

标签: javascript cookies codeigniter-3

我在JS中有这个脚本

function setCookie(name, value, days) {
  var d = new Date;
  d.setTime(d.getTime() + 24*60*60*1000*days);
  document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString();
}

我可以在我的Chrome浏览器选项 - >设置中看到Cookie名称" workLocation"已设定。 Cookie的域名是" /",'发送给'选项是"任何类型的连接"并且可以访问脚本'选项是"是"。

当我使用下面的JS代码调用cookie时,它返回null。

function getCookie(name) {
    var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
    return v ? v[2] : null;
}
alert(getCookie("workLocation"));

我曾尝试使用PHP来显示cookies var_dump($ _ COOKIE);但它只显示codeigniter cookies" ci_session"和" httpUser"。我使用了相同的JavaScript来设置和获取cookie并且它正在工作,除了这个页面。任何想法如何解决?

1 个答案:

答案 0 :(得分:0)

服务器和客户端中的cookie不同,服务器中的cookie存储在

  

本地存储

并且客户端中的cookie存储在

  

缓存

如果你想从js获取cookie,你可以使用这个函数:

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 "";
}

function checkCookie() {
    var user = getCookie("username");
    if (user != "") {
        alert("Welcome again " + user);
    } else {
        user = prompt("Please enter your name:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }
} 

但是如果你想从php获取cookie,特别是CI中的那些会话

你可以使用这个命令$this->session->userdata("key");