WebInside

Каталог статей

Учимся считать посетителей сайта

Версия для печати
Автор: Admin
Просмотров: 41
Слов: 689
Рейтинг: Нет оценки

   Итак, мы попытаемся рассмотреть в этой статье основные принципы для построения счетчиков посетителей, а так же попытаемся проанализировать, какой раздел нашего сайта пользуется наибольшей популярностью.
   
   Для работы нам понадобится два файла - первый собственно для самого скрипта и второй для счетчика. Файл счетчика должен содержать следующую информацию: в первой строке начальное значение для загруженных страниц, во второй строке начальное значение для количества уникальных посетителей.     
   Приступим к написанию сам ого скрипта. Как известно любой php-скрипт начинается с     
    
   <?     
    
   /*Заметьте, что перед этими символами нельзя помещать никакую другую информацию (даже пробелы и переводы строк). Это связанно с алгоритмом установкой cookie. */    
    
   $filename = "counter.log";
   
   $counter = file($filename);
   for ($i=0; $i<sizeof($counter); $i++) {
   $counter[$i] = trim(str_replace ("n","", $counter[$i]));
   } 
        
   Данная часть кода считывает содержимое файла counter.log в массив строк. Но так как в конце каждой строки содержится символ n и возможно лишние пробелы в начале и конце строки, нам необходимо от них избавиться, что мы и делаем. В итоге получаем массив $counter[] в котором нулевое значение это количество загрузок страниц, а первый элемент - количество уникальных посетителей.     
    
   $curdate = mktime (0,0,0,date("m"), date("d"), date("Y"));
   $nextday = mktime (0,0,0,date("m"), date("d")+1, date("Y"));
   
   if (!isset($_COOKIE["lastvisit"])) {
   $counter[1]++;
   $counter[0]++;
   setcookie ("lastvisit", $curdate, $nextday);
   }
   else {
   $counter[0]++;
   } 
    
    
   Далее мы пытаемся определить уникальный ли это пользователь или нет. Уникальным в данном случае считается новый пользователь или тот, кто зашел не ранее чем через 1 день с момента последнего посещения (это простая условность, можете изменять по своему усмотрению) . Для этого мы проверяем его cookie на наличие нашей печенки ;) с именем lastvisit. Если таковой нет, мы увеличиваем счетчик загрузок страниц и счетчик уникальных посетителей, а после этого ставим ему нашу печенку с временем жизни 1 день.     
    
   $counter[0] = $counter[0]."n";
   $counter[1] = $counter[1]."n";
   
   $counter = implode("", $counter);
   $fp = fopen($filename, "w");
   if ($fp) fwrite($fp, $counter);
   fclose($fp); 
   
    
   Приводим наш массив к нужному виду, добавляя перевод строки к каждому элементу, и записываем опять в файл.
   
   Как видите, нет ничего проще, чем написать счетчик посетителей вашего файла. Конечно, данный пример не учитывает тех пользователей у которых запрещена установка cookie (параноики, не правда ли?), но я думаю, что после прочтения данной статьи вам не составит труда его изменить под свои нужды.
   
   Далее мы попытаемся проанализировать в какие разделы нашего сайта чаще забредают пользователи, какие браузеры и ОС они используют и т.д.     
    
   $page = $_SERVER["PHP_SELF"];
   $qstring = $_SERVER["QUERY_STRING"]; 

    
   Получаем имя браузера:     
    
   if (strstr($_SERVER["HTTP_USER_AGENT"], "Nav")) $browser = "Netscape";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) $browser = "MSIE";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "Lynx")) $browser = "Lynx";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "Opera")) $browser = "Opera";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "WebTV")) $browser = "WebTV";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "Konqueror")) $browser = "Konqueror";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "Bot")) $browser = "Bot";
   else $browser = "Other"; 
    
    
   Название операционной системы:     
    
   if((strstr($_SERVER["HTTP_USER_AGENT"], "Win")) $os = "Windows";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "Mac")) || (ereg("PPC", getenv("HTTP_USER_AGENT")))) $os = "Mac";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "Linux")) $os = "Linux";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "FreeBSD")) $os = "FreeBSD";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "SunOS")) $os = "SunOS";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "IRIX")) $os = "IRIX";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "BeOS")) $os = "BeOS";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "OS/2")) $os = "OS/2";
   elseif (strstr($_SERVER["HTTP_USER_AGENT"], "AIX")) $os = "AIX";
   else $os = "Other"; 
   
    
   Определяем IP, имя хоста и реферер пользователя:     
    
   if (isset ($_SERVER["HTTP_X_FORWARDED_FOR"]))
   { $host = gethostbyaddr($_SERVER["HTTP_X_FORWARDED_FOR"]; }
   else{ $host = gethostbyaddr($_SERVER["REMOTE_ADDR"]); }
   $ip= $_SERVER["REMOTE_ADDR"];
   $referer = $_SERVER["HTTP_REFERER"];
   
   $date=date('d M Y, H:i:s'); 
    
    
   Далее все это следует сохранить в базе данных. Например так:
   
   <code>
   function connect_db()
   {
   global $pass,$login, $database_name;
   mysql_connect("localhost",$login,$pass);
   $db=mysql_select_db("$database_name");
   return $db;
   }
   connect_db();
   
   mysql_query("INSERT INTO stat VALUES ('$host', '$ip', '$browser', '$os','$referer', '$page', '$qstring', '$date')");
   
   ?> 
    
    
   Ну а теперь имея минимальные познания в синтаксисе mysql мы можем получить самую разнообразную информацию. Например, процентное отношение используемых браузеров или популярность разделов. Если вы еще не догадались, как это сделать, я подскажу - определяем общее количество записей в базе и делим на него, скажем, количество скажем пользователей использующих браузер MSIE. Более сложные запросы вы сможете придумать сами.

Об авторе



Читайте также в нашем каталоге:


Комментарии

Комментарии отсутствуют
Добавить комментарий

Введите код с изображения

Visual CAPTCHA