1

从一页到另一页时,我似乎丢失了 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;
}
4

3 回答 3

3

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

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

还要注意在您的站点的任何地方使用相同的域名,否则当example.com没有www子域的情况下为 www.example.com 设置的 cookie 不可用时,可能会出现一些混乱。

于 2013-04-26T14:00:48.777 回答
2

尝试以下操作;

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

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

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

于 2013-04-26T13:58:52.867 回答
1

这可能是您的问题,也可能不是您的问题,但请确保您的域在您浏览应用程序时没有以任何方式发生变化。

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

于 2013-04-26T13:58:22.843 回答