Написание собственно системы статистики

makapoff
На сайте с 19.08.2008
Offline
128
1151

Поделитесь опытом делал ли кто для сайт собственную статистику. Интересуют следующие моменты:

1) как отличить от куда пришел посетитель (refer)

2) по какой ключевой фразе

3) как отличить директ от ПС Яндекс и Эдвордс от посетителей с гугла?

Буду признателен за любую информацию, статью, модуль и т.д.

Куплю контекстные ссылки - навсегда. ТИЦ > 100. Домену от 2-х лет. Куплю ссылки с мебельных сайтов!
АТ
На сайте с 04.05.2010
Offline
51
#1

1) как отличить от куда пришел посетитель (refer)

если я правильно понял вопрос, вы хотите разбить посетителей на группы по типу источника трафика(почтовые сервисы, каталоги, социальные сети и тд.)? Тут все просто, создаете справочники по каждому типу с списком урл и потом по рефереру определяете.

2) по какой ключевой фразе

Не совсем понятно, что вы хотите узнать.

3) как отличить директ от ПС Яндекс и Эдвордс от посетителей с гугла?

Никак, отличить можно только если в настройках РК к урл страницы добавляется openstat или utm метка.

makapoff
На сайте с 19.08.2008
Offline
128
#3
Андрей Т.:
2) по какой ключевой фразе
Не совсем понятно, что вы хотите узнать.

что пользователь набрал в ПС, что бы попасть на сайт.

Андрей Т.:
3) как отличить директ от ПС Яндекс и Эдвордс от посетителей с гугла?
Никак, отличить можно только если в настройках РК к урл страницы добавляется openstat или utm метка.

а как ЛИ, ВебВизор и др. системы статистики это делают без изменения урла.

АТ
На сайте с 04.05.2010
Offline
51
#4
что пользователь набрал в ПС, что бы попасть на сайт.

Поисковый запрос получаем также из реферера.

а как ЛИ, ВебВизор и др. системы статистики это делают без изменения урла.

Никак, вот выдержка из хелпа ЛИ по разделу direct.yandex.ru: "Для того, чтобы производился учет переходов по объявлениям, вы должны включить галочку "Внешняя интернет-статистика" на странице настроек вашей рекламной кампании в системе Яндекс.Direct (ссылка "Изменить параметры...")."

При включенной опции "Внешняя интернет-статистика", к урл добавляется openstat метка.

petrof85
На сайте с 19.08.2008
Offline
49
#5

Писал несколько лет назад - может не работать! )

Если будете делать не javascript, а php, то особое внимание уделите

отсеиванию посещений сайта роботами.

Их может быть много )))

//функция для определения поисковой системы и ключевого слова

//реферер в базу складывался, а функция достает и по рефереру определяет

function ShowWebSearchingTo($res,$sait)
{
$i=0;
while($row = mysql_fetch_array($res))
{
$reff = $row['referer'];
switch($sait)
{
case 'Yandex':
eregi("text=([^&]*)",$reff."&",$query);
$text[$i]['word'] = urldecode($query[1]);
$text[$i]['sait'] = "Yandex";
break;
case 'Rambler':
eregi("words=([^&]*)",$reff."&",$query);
$text[$i]['word'] = urldecode($query[1]);
$text[$i]['sait'] = "Rambler";
break;
case 'Google':
eregi("q=([^&]*)",$reff."&",$query);
$text[$i]['word'] = urldecode($query[1]);
$text[$i]['word'] = $this->utf8_win($text[$i]['word']);
$text[$i]['sait'] = "Google";
break;
case 'Aport':
eregi("r=([^&]*)",$reff."&",$query);
$text[$i]['word'] = urldecode($query[1]);
$text[$i]['sait'] = "Aport";
break;
case 'MSN':
eregi("q=([^&]*)",$reff."&",$query);
$text[$i]['word'] = urldecode($query[1]);
$text[$i]['word'] = $this->utf8_win($text[$i]['word']);
$text[$i]['sait'] = "MSN";
break;
case 'Mail.ru':
eregi("q=([^&]*)",$reff."&",$query);
$text[$i]['word'] = urldecode($query[1]);
$text[$i]['sait'] = "Mail.ru";
break;
}
$text[$i]['IP'] = $row['IP'];
$text[$i]['data'] = $row['visit_date'];
$text[$i]['count'] = $i + 1;
$query = "SELECT `url` FROM `citrus_stat_url` WHERE `session` = '".$row['session']."' ORDER BY `data` ASC LIMIT 1";
$res2 = mysql_query($query);
$row2 = mysql_fetch_array($res2);
$text[$i]['url'] = $row2['url'];
$i++;
}
return $text;
}

//## перекодировка unicode UTF-8 -> win1251

function utf8_win ($s)
{
$out="";
$c1="";
$byte2=false;
for ($c=0;$c<strlen($s);$c++)
{
$i=ord($s[$c]);
if ($i<=127) $out.=$s[$c];
if ($byte2)
{
$new_c2=($c1&3)*64+($i&63);
$new_c1=($c1>>2)&5;
$new_i=$new_c1*256+$new_c2;
if ($new_i==1025)
{
$out_i=168;
}else{
if ($new_i==1105){
$out_i=184;
}else {
$out_i=$new_i-848;
}
}
$out.=chr($out_i);
$byte2=false;
}
if (($i>>5)==6) {
$c1=$i;
$byte2=true;
}
}
return $out;
}

petrof85 добавил 26.08.2010 в 17:47

Если интересно: определение браузера и ОС.

function detect_browser($HTTP_USER_AGENT)
{
// Браузер и его версия
if (eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}", $HTTP_USER_AGENT, $match) || eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $HTTP_USER_AGENT, $match)) {
$browser['name'] = "Opera";
$browser['version'] = $match[2];
}
elseif (eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match)) {
$browser['name'] = "Konqueror";
$browser['version'] = $match[2];
}
elseif (eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $HTTP_USER_AGENT, $match)) {
$browser['name'] = "Lynx";
$browser['version'] = $match[2];
}
elseif (eregi("(links) \(([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match)) {
$browser['name'] = "Links";
$browser['version'] = $match[2];
}
elseif (eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match)) {
$browser['name'] = "MSIE";
$browser['version'] = $match[2];
}
elseif (eregi("(netscape6)/(6.[0-9]{1,3})", $HTTP_USER_AGENT, $match)) {
$browser['name'] = "Netscape";
$browser['version'] = $match[2];
}
elseif (eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})", $HTTP_USER_AGENT, $match)) {
$browser['name'] = "Netscape";
$browser['version'] = $match[2];
}
elseif (eregi("mozilla/5", $HTTP_USER_AGENT)) {
$browser['name'] = "Netscape";
$browser['version'] = "Unknown";
}
elseif (eregi("w3m", $HTTP_USER_AGENT)) {
$browser['name'] = "w3m";
$browser['version'] = "Unknown";
}
else {
$browser['name'] = "Unknown";
$browser['version'] = "Unknown";
}

// Операционная система
if (eregi("linux", $HTTP_USER_AGENT)) $browser['os'] = "Linux";
elseif (eregi("win32", $HTTP_USER_AGENT)) $browser['os'] = "Windows";
elseif ((eregi("(win)([0-9]{2})", $HTTP_USER_AGENT, $match)) || (eregi("(windows) ([0-9]{2})", $HTTP_USER_AGENT, $match))) $browser['os'] = "Windows ".$match[2];
elseif (eregi("(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match)) $browser['os'] = "Windows NT ".$match[2];
elseif (eregi("(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match)) $browser['os'] = "Windows NT ".$match[3];
elseif (eregi("mac", $HTTP_USER_AGENT)) $browser['os'] = "Macintosh";
elseif (eregi("(sunos) ([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match)) $browser['os'] = "SunOS ".$match[2];
elseif (eregi("(beos) r([0-9]{1,2}.[0-9]{1,2}){0,1}", $HTTP_USER_AGENT, $match)) $browser['os'] = "BeOS ".$match[2];
elseif (eregi("freebsd", $HTTP_USER_AGENT)) $browser['os'] = "FreeBSD";
elseif (eregi("openbsd", $HTTP_USER_AGENT)) $browser['os'] = "OpenBSD";
elseif (eregi("irix", $HTTP_USER_AGENT)) $browser['os'] = "IRIX";
elseif (eregi("os/2", $HTTP_USER_AGENT)) $browser['os'] = "OS/2";
elseif (eregi("plan9", $HTTP_USER_AGENT)) $browser['os'] = "Plan9";
elseif (eregi("unix", $HTTP_USER_AGENT) || eregi("hp-ux", $HTTP_USER_AGENT)) $browser['os'] = "Unix";
elseif (eregi("osf", $HTTP_USER_AGENT)) $browser['os'] = "OSF";
else $browser['os'] = "Unknown";

return $browser;
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий