我有一个问题,设置一个cookie在chrome中完美运行但不是IE或firefox。所有浏览器都是当前版本,我在Windows 8机器上。我正在尝试设置一个持续一年的cookie。
我可以验证IE和Firefox正在接收来自我的网站的其他插件和第三方服务创建的其他cookie,但它只是不想接受我尝试设置的cookie。
通过Firefox中的firebug,我试图查看被拒绝的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
);
}
}
备注:
除了在我的浏览器中查看cookie之外,我还使用此代码来验证cookie,该cookie再次显示chrome中的输出但没有其他浏览器。
<?php echo "'".$_COOKIE['returning_visit']."'"; ?>
更新
问题是只有在以管理员身份登录时才设置cookie。确实正在设置cookie。我创建了一个更具体的wordpress问题:
解决方案
问题是我的主机缓存了这些页面。需要解冻页面才能运行正确的php代码。管理员已禁用缓存,这就是我将cookie作为管理员而不是普通用户的原因。
答案 0 :(得分:0)
我读了你的更新
问题是只有在以管理员身份登录时才设置cookie。确实正在设置cookie。
它看起来像事件处理程序
add_action( 'init', 'visitor_cookie');
仅当用户是管理员时才会触发。
我相信您在Chrome上使用管理员会话,在其他浏览器上工作。
把东西放在if( is-admin )
表达式