statistics

Функция добавляет информацию о посетителе в Б.Д.

Синтаксис: statistics($action=0, $user_id=0)

$action - вид опции сбора статистики

$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), '/');// строковое имя
	}
}




Предложения и пожелания:
Ваше имя: Ваш E-mail:
Введите изображенные цифры:
Captcha

Обсуждения на форуме:

некорректно отображается страница в браузерах

не могу войти в admin

Нужна критика идеи

Поиск по дополнительным полям и формам

Вопрос по категориям

Несколько вопросов по проекту.

Плагины, меню и интеграция

Полезное:

Видео-обучение

Работа с шаблонами

Документация API

База данных и её таблицы

Регистрация на форуме

Скачать последнюю версию

Связь с авторами

Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter| Здравствуйте, Гость | Войти | Регистрация| Карта сайта | RSS ленты
О проекте | Скачать CMS | Видеоуроки | Документация | Плагины | Форум | Идеи | Новости | Веб-мастеру | Контакты

YaPro CMS в Живом Журнале

YaPro CMS в Твитере

YaPro CMS в Одноклассниках

YaPro CMS в Яндекс.Блогах

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2012 YaPro.Ru


Главная » Документация » API для разработчика » Глобальные функции »