В последнее время в сети ищут как сделать скрипт, который будет высылать на почту вместе с заказом полезную информацию, такую как сайт с которого пришел посетитель и ключевое слово, если это была поисковая система.
Представляю вам рабочую версию PHP скрипта реферальных хвостов для Google, Yandex, Rambler, Mail.ru и др.:
array('name'=>'Yandex Direct','substr'=>'"^https?\:\/\/(direct\.)?yandex\.\w+\/search"','term'=>'text'),
'Yandex Search'=>array('name'=>'Yandex Search','substr'=>'"^https?\:\/\/(www\.)?yandex\.\w+\/(.*)from=yandex\.\w+\%3byandsearch\%"','term'=>'text'),
'Yandex_Search'=>array('name'=>'Yandex_Search','substr'=>'"^https?\:\/\/(www\.)?yandex\.\w+\/yandsearch\?"','term'=>'text'),
'Mail.ru'=>array('name'=>'Mail.ru','substr'=>'"^https?\:\/\/(\w+\.)?mail.ru\/search"','term'=>'q'),
'qip.ru'=>array('name'=>'qip.ru','substr'=>'"^https?\:\/\/(\w+\.)?qip.ru\/search"','term'=>'query'),
'Rambler'=>array('name'=>'Rambler','substr'=>'"^https?\:\/\/(\w+\.)?rambler.ru\/search"','term'=>'query'),
'Facebook'=>array('name'=>'Facebook','substr'=>'"^https?\:\/\/(www\.)?facebook.com\/"'),
'Google Adwords'=>array('name'=>'Google Adwords','substr'=>'"^https?\:\/\/(www\.)?google(\.\w+)+\/aclk\?"','term'=>'q'),
'Google Search'=>array('name'=>'Google Search','substr'=>'"^https?\:\/\/(www\.)?google(\.\w+)+\/(\w+)?\?"'),
'Google_Search'=>array('name'=>'Google_Search','substr'=>'"^https?\:\/\/(www\.)?google(\.\w+)+\/.*"'),
'Bing'=>array('name'=>'Bing','substr'=>'"^https?\:\/\/(www\.)?bing.com\/search\?"','term'=>'q'),
'VKontakte'=>array('name'=>'VKontakte','substr'=>'"^https?\:\/\/(www\.)?vk\.com\/"')
);
### если отладка, открываем файл лога
if ($debug_mode)
$lf=fopen(dirname(__FILE__).'/'.'debug.log','a');
### функция записи в лог
function writelog($s) {
global $lf,$debug;
if ($debug_mode)
fputs($lf,"$s\n");
}
### формируем реферальные данные
$t=date('Y-m-d H:i:s');
$ip=$_SERVER['REMOTE_ADDR'];
$utmdata='';
$referer=isset($_SERVER['HTTP_REFERER']) ? strtolower(trim($_SERVER['HTTP_REFERER'])) : '';
### скрипт обработки UTM меток (в разработке)
//$utm=isset($_GET['utm_source']) ? strtolower(trim($_GET['utm_source'])) : '';
//$term=isset($_GET['utm_term']) ? strtolower(trim($_GET['utm_term'])) : '';
$utm='нет';
$term='нет';
### запись отладочной информации
writelog("\nSession started (index.php) at '$t', IP='$ip', Referer='$referer'");
writelog("Cokies: ".print_r($_COOKIE,true));
writelog("REQUEST: ".print_r($_REQUEST,true));
### реферальная информация
if (isset($_COOKIE['utmdata']))
{
writelog("Found saved cookie UTMdata");
$utmdataexp=explode('&',$_COOKIE['utmdata']);
if (count($utmdataexp)>=2 && !empty($utmdataexp[0]) && !empty($utmdataexp[1]))
{
$t=$utmdataexp[0];
$utm=$utmdataexp[1];
$term=$utmdataexp[2];
$utmdata=$t.'&'.$utm.'&'.$term;
}
}
$newutm=0;
if (!empty($referer))
{
foreach ($referers as $ref)
{
writelog("Checking ".$ref['substr']." in $referer...");
if (preg_match($ref['substr'],$referer))
{
$utm=$ref['name'];
writelog("Found substr for $utm...");
$newutm=1;
break;
}
}
}
if ($newutm)
{
$term='нет';
if (!empty($referer))
{
if ( isset($referers[$utm]) && isset($referers[$utm]['term']) )
{
$termstr=$referers[$utm]['term'];
writelog("Processing term for $utm...");
$s=preg_replace('/^.*\?(.*)$/','$1',$referer);
$a=explode('&',$s);
foreach ($a as $aa)
{
$ab=explode('=',$aa);
if ($ab[0]==$termstr)
{
$term=rawurldecode($ab[1]);
writelog("Found term '$term'");
break;
}
}
}
else
$utm=$referer;
}
}
if (!empty($referer) && (!$newutm) )
{
$host=strtolower(parse_url($referer,PHP_URL_HOST));
if (strpos($host,$myhost)===false)
{
$utm=$referer;
$term='нет';
$newutm=1;
}
}
if ($newutm)
{
$t=date('Y-m-d H:i:s');
writelog("Newutm: writing new UTM data...");
$utmdata=$t.'&'.$utm.'&'.$term;
setcookie('utmdata',$utmdata,time()+60*60*24*30,'/');
}
writelog("UTM Data: $utmdata");
writelog("Session finished\n");
Теперь нам, осталось вставить в функцию отправки сообщения на почту, переменные с данными полученными от скрипта, например:
$text .= "Заявка для консультации со специалистом \n" . "Имя: " . $name . "\n" . "Телефон: " . $phone .$m . "\n";
$text .= 'Сайт-источник: ' . $utm. "\n" ;
$text .= 'Ключевая фраза: ' . $term ;
mail($email,$subject,$text,"From: test@test.ru");
как Вас найти на Workzilla?
ОтветитьУдалить