从页面到页面时丢失cookie

时间:2013-04-26 13:55:16

标签: php cookies setcookie

我在页面到页面时似乎丢失了cookie信息。

我在header.php文件中生成了一个cookie,然后将其包含在其他页面中。如果我刷新一页,cookie确实会创建一个新页面。但是,当我转到新页面时,会生成一个新的cookie。

我的标题中有getCookie(),然后在我需要使用时在网站的其余部分使用$ cookieID。

这是我用来检查cookie是否已经存在并且如果没有生成cookie的函数

function getCookie() {
    if(isset($_COOKIE['ID'])){
        $cookieID = $_COOKIE['ID'];
    }
    else{
        //generate random value for cookie id
        $charid = strtoupper(md5(uniqid(rand(), true)));
        $uuid =  substr($charid, 0, 8)
                 .substr($charid,20,12);

        setcookie( "ID", $uuid, time()+604800 ); // 7 days
        $cookieID = $_COOKIE['ID'];
            //need to refresh the page to get the new cookie ID
        echo "<META HTTP-EQUIV='Refresh' CONTENT='0'>  ";
    }
    return $cookieID;
}

3 个答案:

答案 0 :(得分:4)

如果您的网站不在某个子目录中,则应在setcookie()调用中设置路径参数,例如/

setcookie('ID', $uuid, time() + 604900, '/');

另外,请注意在您的网站的任何地方使用相同的域名,否则如果没有 www,example.com上的Cookie设置为www.example.com时,可能会出现一些混淆子域名。

答案 1 :(得分:2)

尝试以下方法;

setcookie( "ID", $uuid, time()+604800, '/');

这会将域设置为root,因此应该适用于整个网站。

此外,如果您在example.com上设置了一个cookie - 它会自动转移到sub1.example.com,www.example.com等,但不幸的是,这不会反过来。

答案 2 :(得分:1)

这可能是您的问题,也可能不是,但请确保您在浏览应用时以不受任何方式更改域名。

例如,从http://www.yourpage.com/page1转到http://yourpage.com/page2会丢失您的Cookie,因为您放弃了www。