我在页面到页面时似乎丢失了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;
}
答案 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。