Как узнать откуда пришли на сайт: Яндекс поиск, Гугл поиск, Директ, Адвордс?
Если вы являетесь владельцем сайта, то вы можете получать трафик из поисковых систем (yandex, google) и с контекстных площадок (direct, adwords). Иногда требуется в зависимости от источника трафика показывать определенные данные на сайте или учитывать источник в собственной системе аналитики. Чтобы узнать откуда пришли на сайт (Яндекс поиск, Гугл поиск, Директ или Адвордс), Вам поможет следующий php-скрипт:
$reffer = $_SERVER['HTTP_REFERER'];
if(strpos($reffer, "yandex")!= 0 && strpos($reffer, "доменное_имя_вашего_сайта")== 0)
{
if(!empty($_GET['yclid']))
{
echo('direct');
}
elseif(!empty($_GET['utm_source']) && $_GET['utm_source'] == 'yandex')
{
echo('direct');
}
else
{
echo('yandex');
}
}
elseif(strpos($reffer, "google")!= 0 && strpos($reffer, "доменное_имя_вашего_сайта")== 0)
{
if(!empty($_GET['gclid']))
{
echo('adwords');
}
elseif(!empty($_GET['utm_source']) && $_GET['utm_source'] == 'google')
{
echo('adwords');
}
else
{
echo('google');
}
}
Попробуем объяснить, что делает скрипт. В переменной $_SERVER[‘HTTP_REFERER’] содержится урл сайта, с которого был осуществлен переход. Из поиска и директа Яндекса в качестве этого урла будет его адрес. Но для определения посетителя из Директа необходимо учитывать $_GET переменные: метки (utm) или переменную для метрики yclid.
UTM-метки задаются при создании и редактировании объявлений в личном кабинете при настройке рекламных кампаний.
Переменную для метрики yclid можно включить, указав галочку вот тут:
Но учтите, что при выборе данной галочки UTM-метки (utm_source) работать не будут. В данном скрипте сделал учёт обоих случаев, чтобы работало и с галочкой, и без нее (тут требует установка утм-меток в объявлении).
При переходе из поиска и адвордса Гугла в качестве урла в $_SERVER[‘HTTP_REFERER’] будет его адрес. Но для определения посетителя из Адвордса необходимо учитывать $_GET переменные: метки (utm) или переменную для гугланалитикса gclid. В этом случае при настройке объявлений в рекламной кампании утм-метки задаются точно также. Учёт обоих переменных в скрипте также предусмотрен.
Для того чтобы при переходе по одному из источников в течении сессии посетителя данные, определённые по источнику трафика, сохранились в сессии, можно воспользоваться следующей модификацией скрипта:
session_start();
$config = array(
'direct' => 'direct',
'adwords' => 'adwords',
'yandex' => 'yandex',
'google' => 'google',
'0' => 'это по умолчанию, при прямом заходе на сайт',
);
$currentParam = $config['0'];
$reffer = $_SERVER['HTTP_REFERER'];
if(strpos($reffer, "yandex")!= 0 && strpos($reffer, "доменное_имя_вашего_сайта")== 0)
{
if(!empty($_SESSION['currentParam']))
$_SESSION['currentParam'] = '';
if(!empty($_GET['yclid']))
{
$currentParam = $config['direct'];
}
elseif(!empty($_GET['utm_source']) && $_GET['utm_source'] == 'yandex')
{
$currentParam = $config['direct'];
}
else
{
$currentParam = $config['yandex'];
}
}
elseif(strpos($reffer, "google")!= 0 && strpos($reffer, "доменное_имя_вашего_сайта")== 0)
{
if(!empty($_SESSION['currentParam']))
$_SESSION['currentParam'] = '';
if(!empty($_GET['gclid']))
{
$currentParam = $config['adwords'];
}
elseif(!empty($_GET['utm_source']) && $_GET['utm_source'] == 'google')
{
$currentParam = $config['adwords'];
}
else
{
$currentParam = $config['google'];
}
}
if(empty($_SESSION['currentParam']))
{
$_SESSION['currentParam'] = $currentParam;
}
Сбасиб Мужик, спас меня) От души!