Отслеживаем реферальные ссылки
Во многих случаях маркетологу, при получении заявки с сайта, интересно знать, откуда пришел посетитель? Также для отслеживания объявлений используются специальные utm метки.
Рассмотрим пример, при котором пользователь приходит на одностраничный сайт и заполняет на нем форму.
<form method="POST">
<input type="text" name="name" placeholder="Ваше имя"><br>
<input type="text" name="phone" placeholder="Ваш телефон"><br>
<button type="submit">Отправить</button>
</form>
А обрабатывается форма скриптом на языке PHP:
<?php
if (isset($_POST['name']) && isset($_POST['phone'])) {
$to = '[email protected]';
$subject = 'Запрос с сайта';
$message = "Имя: {$_POST['name']}\nТелефон: {$_POST['phone']}";
$headers = "From: {$to}\r\n" . "Reply-To: {$to}\r\n" . 'X-Mailer: PHP' . phpversion();
mail($to, $subject, $message, $headers);
}
?>
Определяем реферала
В PHP для того, чтобы определить, с какой страницы перешел посетитель, можно использовать значение переменной $_SERVER['HTTP_REFERER']
. Но, тут есть проблема! Если мы отправим форму, то значение этой переменной будет равно адресу той странице, на которой нажали кнопку "Отправить"!
Обойти это можно простым путем: При первом заходе человека на сайт, нам нужно запомнить значение в сookie - не вдаваясь в детали - это механизм отслеживания пользователя через его браузер. Установить сookie просто. В начале скрипта, который создает наш лендинг, достаточно вставить слудующий код:
<?php
// если мы не знаем реферала
if (!isset($_COOKIE['referer'])) {
// то запоминаем его
setcookie('referer', $_SERVER['HTTP_REFERER'], mktime(0, 0, 0, 1, 1, 2020));
}
?>
По этой же схеме запоминаем и utm-метки:
<?php
// запоминаем utm-метки
if (isset($_GET['utm_source']) && !isset($_COOKIE['utm_source'])) {
foreach ($_GET as $key => $val) {
if (0 === strpos($key, 'utm')) {
setcookie($key, $val, mktime(0, 0, 0, 1, 1, 2020));
}
}
}
?>
Теперь нам нужно вставить этот код в наш лендинг, на который приходят посетители.
Итоги
Тогда итоговый скрипт лендинга будет иметь примерно следующий вид:
<?php
// если мы не знаем реферала
if (!isset($_COOKIE['referer'])) {
// то запоминаем его
setcookie('referer', $_SERVER['HTTP_REFERER'], mktime(0, 0, 0, 1, 1, 2020));
}
// запоминаем utm-метки
if (isset($_GET['utm_source']) && !isset($_COOKIE['utm_source'])) {
foreach ($_GET as $key => $val) {
if (0 === strpos($key, 'utm')) {
setcookie($key, $val, mktime(0, 0, 0, 1, 1, 2020));
}
}
}
?>
<form method="POST">
<input type="text" name="name" placeholder="Ваше имя"><br>
<input type="text" name="phone" placeholder="Ваш телефон"><br>
<button type="submit">Отправить</button>
</form>
<?php
if (isset($_POST['name']) && isset($_POST['phone'])) {
$to = '[email protected]';
$subject = 'Запрос с сайта';
$message = "Имя: {$_POST['name']}\n"
. "Телефон: {$_POST['phone']}\n"
. "Реферал: {$_COOKIE['referer']}\n";
foreach ($_COOKIE as $key => $val) {
if (0 === strpos($key, 'utm')) {
$message .= "$key: $val\n";
}
}
$headers = "From: {$to}\r\n"
. "Reply-To: {$to}\r\n"
. 'X-Mailer: PHP' . phpversion();
if (@mail($to, $subject, $message, $headers)) {
print "<p>Сообщение отправлено успешно</p>";
} else {
print "<p>При отправке произошла ошибка</p>";
}
}
?>
Удачи!
Автор: keltanas
comments powered by Disqus