为什么我的饼干没有设置?

时间:2015-06-11 10:25:18

标签: php wordpress cookies

我们正在使用php根据用户的来源为我们的用户设置一些Cookie - 其中一些将根据引荐来源网址设置,有些将根据网址中的简短查询字符串进行设置。 / p>

我们只设置了2个Cookie,其目的是跟踪流量的来源,并将数据包含在用户提交的产品中 - 然后我们就可以跟踪哪些提交来自哪个广告系列。

这是一个自定义的wordpress网站,因此代码分为几个不同的文件,如下所示:

的header.php:

<?php
    $origin = $_SERVER['HTTP_REFERER'];
    $current = $_SERVER['PHP_SELF'];    
    $bestbefore = time() + 60 * 60 * 24 * 7;

    if (isset($_COOKIE['ccsvissource']))
    {
    }
    else
    {
        if (isset($_GET[gclid]))
        {
            setcookie('ccsvissource', 'Google', $bestbefore);
            setcookie('ccsvismedium', 'Adwords', $bestbefore);
        }
        elseif (stripos($origin, 'facebook') !== false)
        {
            setcookie('ccsvissource', 'Advertising', $bestbefore);
            setcookie('ccsvismedium', 'Facebook', $bestbefore);
        }
        elseif ($_GET[utm_medium] == "111")
        {
            setcookie('ccsvissource', 'Advertising', $bestbefore);
            setcookie('ccsvismedium', 'emailcampaign', $bestbefore);
        }
        else
        {
            setcookie('ccsvissource', $origin, $bestbefore);
            setcookie('ccsvismedium', 'Unknown', $bestbefore);
        }
?>

footer.php:

<?php 
    $mktSource = $_COOKIE['ccsvissource'];
    $mktMedium = $_COOKIE['ccsvismedium'];
?>

<p class="hide-me" id="mkt-source"><?php echo $mktSource; ?></p>
<p class="hide-me" id="mkt-medium"><?php echo $mktMedium; ?></p>

<script type="text/javascript">
    $(document).ready(function(){
        var mktSource = $('#mkt-source').text();
        var mktMedium = $('#mkt-medium').text();

        $('#hid-ms').val(mktSource);
        $('#hid-mm').val(mktMedium);
    });
</script>

然后,这些值将传递到用户的申请表中,我们的潜在客户管理系统将完成其余工作。

问题是不一致 - 有时厨师正在设定,有时则没有。客户端是否存在某种情况会阻止cookie被设置?

我知道用户可能关闭了cookie跟踪,并且已经解释了这一点 - 空cookie的数量仍然太高,所以我想我错过了什么。

如果您需要任何进一步的信息,请与我们联系!

非常感谢。

1 个答案:

答案 0 :(得分:0)

使用新的wordpress我也遇到了同样的问题,我的自定义cookie没有设置我的代码是正确的,但在某个地方我发现有时自定义cookie不起作用。所以最后我发现了这个带有wp_head钩子的工作示例。

假设您想设置2个不同的Cookie,例如Areacurrency,您需要使用此功能wp_head,我已在个人项目中使用此功能。它完美地工作。

add_action('wp_head', 'my_setcookie');
function my_setcookie()
{
    if (!empty($_REQUEST['area'])) {

        $area_set = ($_REQUEST['area']);
        setcookie('area', $area_set, time() + 3600, COOKIEPATH);
    }

    if (!empty($_REQUEST['currency'])) {

        $currency_request = ($_REQUEST['currency']);
        setcookie('currency_cookie', $currency_request, time() + 3600, COOKIEPATH);
    }

}