我有一个问题,即设置 cookie 在 chrome 中完美运行,但在 IE 或 firefox 中无法正常运行。所有浏览器都是当前版本,我在 Windows 8 机器上。我正在尝试设置一个持续一年的 cookie。
我可以验证 IE 和 firefox 是否正在从我的站点接收由其他插件和 3rd 方服务创建的其他 cookie,但它只是不想接受我尝试设置的 cookie。
通过 Firefox 中的萤火虫,我试图查看被拒绝的 cookie,但没有列出,就像我的 cookie 只是不想在 chrome 之外工作。
此代码位于我的 wordpress 网站内的 functions.php 文件中:
add_action( 'init', 'visitor_cookie');
function visitor_cookie() {
if (!isset($_COOKIE['returning_visit'])) {
$traffic_type = 'hd';
$timestring = microtime();
$pieces = explode(" ", substr($timestring, 2));
$pieces[0] = "1".substr($pieces[0],0,3);
$visitor_id = $traffic_type.dechex($pieces[1]) . dechex($pieces[0]);
$expire = time()+60*60*24*360;
$path = '/';
$domain = parse_url(get_option('siteurl'), PHP_URL_HOST);
setcookie(
'returning_visit',
$visitor_id,
$expire,
$path,
$domain
);
}
}
笔记:
- 请注意,我的域目前是 development.mydomain.com 将移至 mydomain.com
- 这不在本地主机/服务器上,它在托管公司
- 这个 cookie 应该在我的整个网站上都可用。
- Cookie 到期日期设置为一年
除了在我的浏览器中查看 cookie 之外,我还使用此代码来验证 cookie,该 cookie 再次在 chrome 中显示输出,但没有其他浏览器。
<?php echo "'".$_COOKIE['returning_visit']."'"; ?>
更新
问题是cookie仅在以管理员身份登录时设置。确实正在设置 cookie。我创建了一个更具体到 wordpress 的问题:
解决方案
问题是我的主机缓存页面。需要取消缓存页面以运行正确的 php 代码。对管理员禁用缓存,这就是为什么我将 cookie 作为管理员而不是普通用户获取的原因。