不确定我做错了什么......
$articleid = "test";
$lastviewedarticles = array();
if (isset($_COOKIE["viewed_articles"]) ) {
$lastviewedarticles = unserialize($_COOKIE["viewed_articles"]);
}
if (!in_array($articleid, $lastviewedarticles)){
$count = count($lastviewedarticles);
if($count>=29)
array_shift($lastviewedarticles);
$lastviewedarticles[] = $articleid;
}
setcookie('viewed_articles', serialize($lastviewedarticles), time()+60*60*24*30, '/', '.' . $domain);
然后这个页面读取cookie并输出内容:
if ( isset($_COOKIE["viewed_articles"]) ) {
$lastviewedarticles = unserialize($_COOKIE["viewed_articles"]);
}
echo "cookie is currently:<br>";
print_r($lastviewedarticles);
正如您在测试页面上看到的那样,cookie 总是空的
... '.$domain');
^ ^
您使用单引号表示 php 不会用变量中的相应值替换
$domain
:
文件:
注意:与双引号和 heredoc 语法不同,变量和 特殊字符的转义序列在出现时不会扩展 出现在单引号字符串中。
并且由于您无法从
.$domain
访问cookie,因此未设置cookie:
文件:
域
cookie 可用的域。将域设置为 'www.example.com' 将使 cookie 在 www 子域中可用 和更高的子域。可用于较低域的 Cookie,例如 'example.com' 将可用于更高级别的子域,例如 'www.example.com'。旧版浏览器仍在执行已弃用的 » RFC 2109 可能需要前导 .匹配所有子域。
改成:
... '.'.$domain);