我有一个问题,其中设置cookie在chrome中可以完美运行,但在IE或Firefox中却不能。所有浏览器均为当前版本,我使用的是Windows 8计算机。我正在尝试设置一个持续一年的cookie。
我可以验证IE和firefox是否从其他插件和3rd party服务创建的网站上接收到其他cookie,但它只是不想接受我尝试设置的cookie。
通过Firefox中的萤火虫,我试图查看被拒绝的cookie,但是没有列出任何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作为管理员而不是普通用户的原因。
我读了你的更新
问题是仅在以管理员身份登录时才设置cookie。cookie确实已设置。
看起来像事件处理程序
add_action( 'init', 'visitor_cookie');
仅当用户是管理员时才被触发。
我相信您可以在Chrome上执行管理会话,而在其他浏览器上以访客身份工作。
把东西放在if( is-admin )
表达之外
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句