2

我有一个问题,即设置 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
      );
    }
}

笔记:

  1. 请注意,我的域目前是 development.mydomain.com 将移至 mydomain.com
  2. 这不在本地主机/服务器上,它在托管公司
  3. 这个 cookie 应该在我的整个网站上都可用。
  4. Cookie 到期日期设置为一年

除了在我的浏览器中查看 cookie 之外,我还使用此代码来验证 cookie,该 cookie 再次在 chrome 中显示输出,但没有其他浏览器。

<?php echo "'".$_COOKIE['returning_visit']."'"; ?>

更新

问题是cookie仅在以管理员身份登录时设置。确实正在设置 cookie。我创建了一个更具体到 wordpress 的问题:

解决方案

问题是我的主机缓存页面。需要取消缓存页面以运行正确的 php 代码。对管理员禁用缓存,这就是为什么我将 cookie 作为管理员而不是普通用户获取的原因。

4

1 回答 1

0

我读了你的更新

问题是cookie仅在以管理员身份登录时设置。确实正在设置 cookie。

它看起来像事件处理程序

add_action( 'init', 'visitor_cookie');

仅当用户是管理员时才会触发..

我相信你在 Chrome 上工作在管理会话上,在其他浏览器上你作为客人工作。

把事情放在if( is-admin )表达之外

于 2013-10-28T00:40:30.710 回答