PHP:根据 Google Adword 广告系列关键字 URL 创建 cookie
PHP: create a cookie from Google Adword campaign keyword URL
我在 Wordpress 站点上使用 PHP 来执行此操作。如果您认为 JavaScript 或 jQuery 更好,请告诉我。
我们的合作伙伴之一是 运行 Google Google 我们的 Adword 广告系列。我无权访问确切的活动 URL,因此我无法根据对活动 URL 的了解来创建 cookie。当用户在我们的网站上提交表单时,企业主希望跟踪用户来自哪些活动。我的计划:
- 我想 set/name 基于 Google Adword 广告系列关键字 URL 的 cookie。
- 如果从之前的活动中设置了 cookie,并且用户点击了新的活动,我想删除之前的活动 cookie(如果存在)并从新的活动中创建 cookie。
- 如果设置了此 cookie - 并且它们在表单页面上 - 我想在 value 属性中加载带有 cookie 名称的隐藏输入 - 并且在提交表单时,该隐藏字段会告诉我们哪个活动他们来自.
这是我们的合作伙伴 URL 使用的 Adword 广告系列示例:
?UTM_keyword=field%20service%20software_phrase&UTM_source=Paid%20Search&gclid=EAIaI
我想做的是抓住上面 URL 在“?UTM_keyword=”和“&UTM_source=”之间的部分 - 在这种情况下,它会是 "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' );
}
?>
content-deluxe-cookie-tracking.php
<input type="hidden" id="1234567890" name="1234567890" value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>">
到目前为止:
- 我已经能够创建一个 cookie,它在浏览器打开时一直存在,在浏览器关闭时过期 - 这正是我想要的。
- 如果活动 URL 在地址栏中,则
form-page.php
returns 中的 "if" 语句为真,
content-deluxe-cookie-tracking.php
加载并且输入 value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>"
是 cookie 名称。
- 但是,如果活动在另一个页面上并且用户到达没有活动的表单页面 URL,那么
form-page.php
[=104] 中的 "if" 语句=]假的,
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
我自己的问题的最终解决方案是使用 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' );
}
?>
content-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;
?>
form-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' );
}
?>
content-deluxe-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 字段中。
我在 Wordpress 站点上使用 PHP 来执行此操作。如果您认为 JavaScript 或 jQuery 更好,请告诉我。
我们的合作伙伴之一是 运行 Google Google 我们的 Adword 广告系列。我无权访问确切的活动 URL,因此我无法根据对活动 URL 的了解来创建 cookie。当用户在我们的网站上提交表单时,企业主希望跟踪用户来自哪些活动。我的计划:
- 我想 set/name 基于 Google Adword 广告系列关键字 URL 的 cookie。
- 如果从之前的活动中设置了 cookie,并且用户点击了新的活动,我想删除之前的活动 cookie(如果存在)并从新的活动中创建 cookie。
- 如果设置了此 cookie - 并且它们在表单页面上 - 我想在 value 属性中加载带有 cookie 名称的隐藏输入 - 并且在提交表单时,该隐藏字段会告诉我们哪个活动他们来自.
这是我们的合作伙伴 URL 使用的 Adword 广告系列示例:
?UTM_keyword=field%20service%20software_phrase&UTM_source=Paid%20Search&gclid=EAIaI
我想做的是抓住上面 URL 在“?UTM_keyword=”和“&UTM_source=”之间的部分 - 在这种情况下,它会是 "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' );
}
?>
content-deluxe-cookie-tracking.php
<input type="hidden" id="1234567890" name="1234567890" value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>">
到目前为止:
- 我已经能够创建一个 cookie,它在浏览器打开时一直存在,在浏览器关闭时过期 - 这正是我想要的。
- 如果活动 URL 在地址栏中,则
form-page.php
returns 中的 "if" 语句为真,content-deluxe-cookie-tracking.php
加载并且输入value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>"
是 cookie 名称。 - 但是,如果活动在另一个页面上并且用户到达没有活动的表单页面 URL,那么
form-page.php
[=104] 中的 "if" 语句=]假的,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
我自己的问题的最终解决方案是使用 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' );
}
?>
content-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;
?>
form-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' );
}
?>
content-deluxe-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 字段中。