RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

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

Автор: shelek Сайт: http://shelek.com/     Рейтинг: N/A из 7       <<НАЗАД
   
   Итак, мы попытаемся рассмотреть в этой статье основные принципы для построения счетчиков посетителей, а так же попытаемся проанализировать, какой раздел нашего сайта пользуется наибольшей популярностью.
   
   Для работы нам понадобится два файла - первый собственно для самого скрипта и второй для счетчика. Файл счетчика должен содержать следующую информацию: в первой строке начальное значение для загруженных страниц, во второй строке начальное значение для количества уникальных посетителей.
   
   Приступим к написанию сам ого скрипта. Как известно любой 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. Более сложные запросы вы сможете придумать сами.
   
   Посмотреть, как все это работает можно посмотреть как всегда на http://ancient.dax.ru
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool