Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
Поиск по сайту


 

   Интернет технологии -> PHP -> Учимся считать посетителей сайта


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

Автор: Ancient

Итак, мы попытаемся рассмотреть в этой статье основные принципы для построения счетчиков посетителей, а так же попытаемся проанализировать, какой раздел нашего сайта пользуется наибольшей популярностью.

Для работы нам понадобится два файла - первый собственно для самого скрипта и второй для счетчика. Файл счетчика должен содержать следующую информацию: в первой строке начальное значение для загруженных страниц, во второй строке начальное значение для количества уникальных посетителей.

Приступим к написанию сам ого скрипта. Как известно любой php-скрипт начинается с




Заметьте, что перед этими символами нельзя помещать никакую другую информацию (даже пробелы и переводы строк). Это связанно с алгоритмом установкой cookie.


$filename = "counter.log";

$counter = file($filename);
for ($i=0; $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');


Далее все это следует сохранить в базе данных. Например так:


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. Более сложные запросы вы сможете придумать сами.


 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100