首页 文章

PHP:使用Google Adword广告系列关键字网址创建Cookie

提问于
浏览
0

我在Wordpress网站上使用PHP来做到这一点 . 如果你认为JavaScript或jQuery会更好,请告诉我 .

我们的合作伙伴之一是为我们运营Google Google Adword广告系列 . 我无法访问确切的广告系列网址,因此无法根据广告系列网址创建Cookie . 业主希望跟踪用户在我们网站上提交表单时来自哪些广告系列 . 我的计划:

  • 我想根据Google Adword广告系列关键字网址设置/命名Cookie .

  • 如果从之前的广告系列设置了Cookie,并且用户点击了新广告系列,我想删除之前的广告系列Cookie(如果存在),并从新广告系列中创建Cookie .

  • 如果设置了这个cookie - 它们在表单页面上 - 我想在value属性中加载一个带有cookie名称的隐藏输入 - 当提交表单时,该隐藏字段会告诉我们它们来自哪个广告系列 .

以下是我们的合作伙伴使用的Adword广告系列网址的示例:

?UTM_keyword =字段%20service%20software_phrase&UTM_source =付费%20Search&GCLID = EAIaI

我想要做的是在“?UTM_keyword =”和“&UTM_source =”之间获取上述URL的部分 - 在这种情况下,它将是“field%20service%20software_phrase” .

这是我到目前为止开发的代码:

header.php - 在每页的 <!DOCTYPE html> 之后

<?php
// load content-utm.php if the URI contains UTM_keyword
    if (strpos($_SERVER['REQUEST_URI'], "UTM_keyword")){
// load content-utm.php
        get_template_part( 'content', 'utm' );
    }
?>

内容utm.php

<?php
    $uriSegments = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY);
// strip out UTM_keyword=
    $uriSegments2 = substr($uriSegments, 12);
// strip out everything after &UTM_source= including &UTM_source=
    $uriSegments3 = substr($uriSegments2, 0, strpos($uriSegments2, "&UTM_source="));
    $_SESSION['uriName'] = $uriSegments3;
// create a cookie
    if (strpos($_SERVER['REQUEST_URI'], $uriSegments3)){
        $cookie_name = $uriSegments3;
        $cookie_value = "UTM";
// make it a session cookie that expires after the browser is closed
        setcookie($cookie_name, $cookie_value, 0, "/");
    }
// I know how to remove a cookie but I'm not sure how I would remove THIS type of cookie
?>

外形page.php文件

<?php
// if the cookie is set
    if (isset($_COOKIE[$uriSegments3])){
// load content-deluxe-cookie-tracking.php
        get_template_part( 'partners/content', 'deluxe-cookie-tracking' );
    } 
?>

内容豪华-cookie的tracking.php

<input type="hidden" id="1234567890" name="1234567890" value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>">

至今:

  • 我已经能够创建一个cookie,只要浏览器打开就会持续存在,并在关闭时到期 - 这就是我想要的 .

  • 如果广告系列网址在地址栏中,则 form-page.php 中的"if"语句返回true, content-deluxe-cookie-tracking.php 加载,输入 value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>" 是Cookie名称 .

  • 但是,如果广告系列位于其他网页上并且用户转到没有广告系列网址的表单页面,那么 form-page.php 中的"if"语句将返回false, content-deluxe-cookie-tracking.php 无法加载 - 我已检查以确保该Cookie存在 .

所以,例如:

www.mysitename.com/form-page/?UTM_keyword=field%20service%20software_phrase&UTM_source=Paid%20Search&gclid=EAIaI

有效,但是:

www.mysitename.com/form-page/

即使cookie在另一个页面上设置,也不起作用,例如:

www.mysitename.com/another-page/?UTM_keyword=field%20service%20software_phrase&UTM_source=Paid%20Search&gclid=EAIaI

1 回答

  • 0

    我对自己问题的最终解决方案是使用php $ _SESSION而不是cookie . 通过这个解决方案,我可以创建一个会话:

    • 可以将广告系列关键字数据保存为命名会话

    • 只要浏览器处于打开状态,会话就会一直存在

    • 会话在每个页面上都会保留,因此用户可以转到其他页面

    • 如果在新选项卡中打开网站,会话将保持不变

    • 该会话用于加载隐藏的输入并填充该隐藏的输入值属性,以便它可以与表单一起发送到CRM软件

    • 每次使用新广告系列时,会话都会使用新的广告系列关键字信息进行更新 . 可以在任何页面上创建广告系列,并在任何页面上进行跟踪 .

    header.php文件

    <?php
    /**
     * Header
    */
    session_start();
    ?>
    <!DOCTYPE html>
    <?php
    // if the URI contains UTM_keyword
        if (strpos($_SERVER['REQUEST_URI'], "UTM_keyword")){
    // load content-utm.php
            get_template_part( 'content', 'utm' );
        }
    ?>
    

    内容utm.php

    <?php
    // parse the URI after the question mark (?)
        $uriSegments = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY);
    // strip out UTM_keyword=
        $uriSegments2 = substr($uriSegments, 12);
    // strip out everything after &UTM_source= including &UTM_source=
        $uriSegments3 = substr($uriSegments2, 0, strpos($uriSegments2, "&UTM_source="));
    // name the session I can reference later
        $_SESSION['uriName'] = $uriSegments3;
    ?>
    

    外形page.php文件

    <?php
    // if the session named uriName is set
        if (isset(isset($_SESSION["uriName"])){
    // load content-deluxe-cookie-tracking.php
            get_template_part( 'partners/content', 'deluxe-cookie-tracking' );
        } 
    ?>
    

    内容豪华-cookie的tracking.php

    // echo the value of the session in the input
    <input type="hidden" id="1234567890" name="1234567890" value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>">
    

    提交表单和数据最终会在创建的CRM字段中检索此数据 .

相关问题