Статистика на сайті
Реферат
"Статистика на сайті"
План
Вступ
Розгляд фрагментів скрипта
Вигляд лічильника у браузері
Вступ
Для будь-якого веб-програміста рано чи пізно постає питання відвідуваності його сайту користувачами. Вже не секрет, що чим більша відвідуваність інтернет-ресурса тим краще для власника сайту. Адже якщо сайт відвідують щоденно багато людей то є більші шанси продати товар, який пропонується на даному сайті, або просто заробити на показі рекламних блоків, банерів, або популярних сьогодні партнерських програмах.
Тому для того щоб можна було взнати кількість відвідувачів сайту на добу і створюють різного роду лічильники хітів і відвідин. Дані лічильники показують скільки чоловік побувало на сайті за добу, та кількість завантажень сторінок сайту(хіти).
Мета цього скрипта – збір статистики на сайті, огляд хітів і відвідувачів. В даній роботі буде створено лічильник, який не накручується при простому перезавантаженні сторінки, натисненні F5, або при перезавантаженні браузера.
Весь лічильник складатиметься з декількох файлів:
1. index.php – сторінка на якій відбувається виклик лічильника
2. counter.php – скрипт з логічними операціями і функціями читання / запису даних
3. img.php – скрипт побудови зображення
4. stat.txt – файл, що містить статистику
1. Розгляд фрагментів скрипта
index.php
Стандартний файл html-коду, що містить, підключений скрипта лічильника <? php include («counter.php’);?> Також в цьому файлі в самому верху сторінки, до тегів необхідно встановити cookie(куки).
<? php setcookie («freshcoder», «count», time()+(24-date('G'))*3600);?>
Перший атрибут у функції (<? php setcookie) несе ім'я cookie, другий атрибут («freshcoder») – значення, яке привласнене цьому імені, тобто якщо виконати echo $_COOKIE['freshcoder'], браузер виведе слово count. Третій атрибут (time()+(24-date('G'))*3600) встановлює час дії cookie, тобто якщо людина зайшла в 10 ранку, нам необхідно встановити cookie на 14 годин. Час дії указується в секундах.
<html>
<head>
<title>
Лічильник </title>
</head>
<body bgcolor= «white» text= «black» link= «blue» vlink= «purple» alink= «red»>
<p> Вітаємо Вас на нашому сайті </p>
<? php @include («counter.php»);?>
</body>
</html>
counter.php
Як захист від накрутки використовується умова перевірки наявності cookie на стороні користувача.
Наприклад людина зайшла на сайт о 10 годині ранку, нам необхідно додати одні відвідини і залишити cookie в браузері цієї людини, які діятимуть до 0.00 годин поточного дня.
Логіка скрипта проста, якщо немає куків у користувача, ми накручуємо лічильник на одиницю і пишемо значення у файл, інакше додаємо хіт.
<? php
$url = «counter/stat.txt»;
if (! file_exists($url)) {
// Якщо файлу нема, створюємо його, і записуємо нульове значення
$count = «0:0»;
$handle = fopen ($url, «a»);
fwrite ($handle,$count);
fclose($handle);
}
else {
// Якщо файл є, то працюємо з ним
$data = file($url); // Відкриваєм його
list ($user,$hit) = explode (»:»,$data[0]); // Розбиваємо масив на змінні
if (!$_COOKIE['freshcoder']) {$user++;$hit++;}
else {$hit++;}
$handle = fopen ($url, «w»); // Відкриваємо файл
$count = $user.»:».$hit; // Формуємо строку
if (flock ($handle, LOCK_EX)) { // Закриваємо файл
fwrite ($handle,$count); // Записуємо її в файл
flock ($handle, LOCK_UN); // Відкриваємо файл
} else {
echo «Повторіть пізніше»;
}
fclose($handle);
}
// Виводимо кількість переглядів.
echo '<img src= «img.php? u='.$user.'& h='.$hit.'» alt= «stat» width=
«80» height= «30» border= «0» />';
?>
img.php
Оскільки функція imagestring(), при побудові запису за початок координат використовує верхній лівий кут, то з часом при збільшенні довжини рядка цифр виникне проблема – частина їх буде виходити за рамки зображення. Для того, щоб цього не відбувалося, існують прості умови, які отримують дані, порівнюють їх, і викликають функцію imagestring() із зміненими координатами. Щоб зрозуміти як це відбувається, переглянемо фрагмент коду:
В якості зображення використовується файл формату gif.
Також в скрипті потрібно додати другий рядок для побудови напису. Даний скрипт отримує дані параметром GET, тому брати дані потрібно з суперглобала $_GET.
img.php? u=’.$user.’&h=’.$hit.’ у цьому рядку ми привласнили змінні $_GET['u'] значення $user, а $_GET['h'] – значення $hit. Це дуже простий спосіб передачі параметрів скрипта. Але такий метод не рекомендується використовувати для передачі пароля, або якихось інших важливих даних.
<? php
// Основа для лічильника
$im = ImageCreateFromGif («bg.gif»);</p>
// Колір тексту
$black = imagecolorallocate ($im, 255,255,255);
// Малюємо кількість відвідувачів
if ($_GET['u']>=1 AND $_GET['u']<10) {
imagestring ($im, 2,69,14,$_GET['u'], $black);
}
if ($_GET['u']>=10 AND $_GET['u']<100) {
imagestring ($im, 2,64,14,$_GET['u'], $black);
}
if ($_GET['u']>=100 AND $_GET['u']<1000) {
imagestring ($im, 2,59,14,$_GET['u'], $black);
}
if ($_GET['u']>=1000 AND $_GET['u']<10000) {
imagestring ($im, 2,54,14,$_GET['u'], $black);
}
if ($_GET['u']>=10000 AND $_GET['u']<100000) {
imagestring ($im, 2,49,14,$_GET['u'], $black);
}
// Малюємо кількість хітів
if ($_GET['h']>=1 AND $_GET['h']<10) {
imagestring ($im, 2,69,3,$_GET['h'], $black);
}
if ($_GET['h']>=10 AND $_GET['h']<100) {
imagestring ($im, 2,64,3,$_GET['h'], $black);
}
if ($_GET['h']>=100 AND $_GET['h']<1000) {
imagestring ($im, 2,59,3,$_GET['h'], $black);
}
if ($_GET['h']>=1000 AND $_GET['h']<10000) {
imagestring ($im, 2,54,3,$_GET['h'], $black);
}
if ($_GET['h']>=10000 AND $_GET['h']<100000) {
imagestring ($im, 2,49,3,$_GET['h'], $black);
}
Header («Content-type: image/gif»);
ImageGif($im);
imagedestroy($im);
?>
2. Вигляд лічильника у браузері
Ось і вийшов лічильник для обліку переходів по сторінках і який вказує реальну кількість відвідувачів.