$user_id - идентификатор пользователя, определяется функцией statistics_user_id или автоматически при определении ID поискового бота
Примечание: автоматически запускается при каждом обращении к любой странице сайта и собирает статистику индексации поисковыми ботами - $action=4 (при условии что это разрешено в настройках сайта: Система » Настройки)
$action - пояснение действий посетителя:
0 - посещение страницы 1 - ушел на аффилат 2 - скачивание файла 3 - неправильное обращение 4 - индексирование поисковым ботом 5 - покинул страницы 6 - посещение страницы с отключенным яваскрипт (внимание, возможен сбор данных о роботах) - WAP или PDA браузеры
Вы можете применять данную функцию в своих скриптах, например в которых не используете встроенный JavaScript-счетчик посещаемости
Примеры:
$user_id = statistics_user_id();// нахожу ID посетителя statistics(0, $user_id);// добавляю информацию о посещений страницы
function statistics($config_name=0, $visitor_id=0){
// если нет подключения к Б.Д. ИЛИ неопределено имя кукиес
if(!$GLOBALS['dbcnx'] || !$GLOBALS['SYSTEM']['config']['yapro_cookie_statistics']){ return false; }
// проверка на включение вида опции сбора статистики в настройках сайта
if(!$GLOBALS['SYSTEM']['config'][ $config_name ]){ return false; }
if(statistics_ignore_ip()){ return false; }
// возможно текущий просмотр является индексацией поискового бота
if($config_name=='yapro_statistics_indexing_bots'){
if($q = mysql_query("SELECT bot_id, bot_agent FROM ".$GLOBALS['SYSTEM']['config']['yapro_phpbb3_prefix']."bots WHERE bot_active='1'")){
while($r=mysql_fetch_assoc($q)){
if(mb_stristr($_SERVER['HTTP_USER_AGENT'], $r['bot_agent'])){
$bot_id = $r['bot_id'];// индексирование ботом
break;// если бот определен - прекращаем итерацию
}
}
}
if(!$bot_id){ return false; }
}
$url = $GLOBALS['SYSTEM']['statistics']['TO_URI']? $GLOBALS['SYSTEM']['statistics']['TO_URI'] : $_SERVER['REQUEST_URI'];
$to_path_id = statistics_path($url);// определяю ее path_id
if(!$to_path_id){ return false; }
// проверка игнорирования данной страницы:
$ignore = @mysql_fetch_assoc(mysql_query("SELECT path_id FROM ".SYSTEM_PREFIX."statistics_paths_ignored WHERE
domain_id='".statistics_domain_id()."' AND path_id = '".$to_path_id."'"));
if($ignore['path_id']){ return false; }
$host = $GLOBALS['SYSTEM']['statistics']['TO_HOST']? $GLOBALS['SYSTEM']['statistics']['TO_HOST'] : $_SERVER['HTTP_HOST'];
$to_domain = statistics_host_clear($host);
$to_domain_id = statistics_domain_id($to_domain);// проверяем есть ли такой домен в Б.Д.
if($config_name!='yapro_statistics_indexing_bots'){// если: не индексация
if(!$visitor_id){ $visitor_id = statistics_visitor_id(); }
$referer = parse_url_($_SERVER['HTTP_REFERER']);
if($referer['host']){// если: пришел с какого-то сайта (возможно с текущего же)
$from_domain = statistics_host_clear($referer['host']);
$from_path_id = statistics_path($_SERVER['HTTP_REFERER']);// определяю from_path_id
if($from_domain==$to_domain){// переход с страницы текущего сайта на страницу текущего сайта
$from_domain_id = $to_domain_id;
}else{
$from_domain_id = statistics_domain_id($from_domain);
if(!$bot_id && $w = statistics_search_text()){// проверка нахождения ключевой фразы
$w = substr($w,0,255);// специально не mb_substr т.к. UTF-8 полю keyword в MySQL прописано 255 байт - это не 255 символов
// проверяем наличие в Б.Д. фразы по которой пришли
$keywords = @mysql_fetch_assoc(mysql_("SELECT keyword_id FROM ".SYSTEM_PREFIX."statistics_keywords WHERE keyword = "._.$w._.""));
if(!$keywords['keyword_id']){
// поле $GLOBALS['SYSTEM']['statistics']['search_system'] объявлено для тестирования
mysql_("INSERT INTO ".SYSTEM_PREFIX."statistics_keywords VALUES (NULL, "._.$w._.",
"._.$GLOBALS['SYSTEM']['statistics']['search_system']._.",
"._.$_SERVER['HTTP_REFERER']._.")");
$keywords['keyword_id'] = mysql_insert_id();
}
}
}
}
}
$config_id = array(
'yapro_statistics_attendance' => 12,
'yapro_statistics_404' => 13,
'yapro_statistics_exit' => 14,
'yapro_statistics_affiliates' => 15,
'yapro_statistics_downloading_files' => 16,
'yapro_statistics_indexing_bots' => 17,
'yapro_statistics_wap_pda' => 18,
'yapro_statistics_bookmarks' => 21
);
mysql_("INSERT INTO ".SYSTEM_PREFIX."statistics VALUES (
"._._.",
"._.$from_domain_id._.",
"._.$from_path_id._.",
"._.$GLOBALS['SYSTEM']['statistics']['search_system']._.",
"._.$keywords['keyword_id']._.",
"._.time()._.",
"._.$visitor_id._.",
"._.$bot_id._.",
"._.$to_domain_id._.",
"._.$to_path_id._.",
"._.$config_id[ $config_name ]._.")");
if($GLOBALS['SYSTEM']['statistics']['newVisitor']){// попытка установить куку новому посетителю
$visitor_first_id = mysql_insert_id();// возможность восстановить правильность данных
@setcookie($GLOBALS['SYSTEM']['config']['yapro_cookie_statistics'], $visitor_id.'_'.$visitor_first_id, ($time+5555555), '/');// строковое имя
}
}