我有一个代码,可以为每个新用户设置一个 cookie,并将其保存到变量中。当我使用 XAMPP 在网站上离线工作时,代码工作得很好,并且 cookie 不会改变,但是当我将其上传到我的网站时,cookie 会随着页面的每次刷新而改变
<?php
if (!isset($_COOKIE['clientCookie'])) {
$uniqueId = uniqid();
$cookieName = "clientCookie";
$cookieValue = $uniqueId;
$cookieExpire = time() + (60 * 60 * 24 * 365 * 10); // Cookie will expire in 10 years
setcookie($cookieName, $cookieValue, $cookieExpire, '/');
$clientId = $uniqueId;
} else {
$clientId = $_COOKIE['clientCookie'];
}
?>
我不确定这里出了什么问题,是否是因为该网站所在的服务器设置方式所致?
您提供的代码是正确的,可能是域名或缓存路由。首先验证您验证cookie的路径是否正确,setcookie()的最后一个参数“/”表示该cookie必须对整个域有效。阅读此处:https://www.php.net/manual/pt_BR/function.setcookie.php
在进行这些更改之前清除浏览器的缓存,以验证它没有被缓存。
还要检查 apache 服务器上 .htaccess 中设置的 cookie。在 mod_headers.c 中禁用动态页面的缓存。示例:
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>