|
Счётчик на PHPИсточник: http://www.nbsp.ru/ Если вашему сайту не нужна расширенная статистка или вы не желаете портить дизайн графическими счётчиками, эта статья - для вас. Счётчик показывает количество уникальных посетителей "сегодня" и "всего". Написан на PHP и успешно работает на моём личном сайте. Для начала уясним следующее: чтобы считать только уникальных посетителей и при этом обходиться без записи IP адресов, необходимо как-то "помечать" посетителя, что он здесь сегодня (или вообще) уже был. Для этого как нельзя лучше подходит механизм cookie. Далее. Значения, в нашем случае это три числа, необходимо всё-таки хранить на сервере, иначе просто негде. Вы спросите, почему три числа, а не два. Дополнительное значение является текущим днём месяца, который записывается и впоследствии проверяется для учета посетителей "сегодня". Рассмотрим код счётчика. Для его работы необходимо вручную создать простой текстовый файл counter.txt в любом редакторе. Выглядит он так: 0 1 0 Первое значение - количество посетителей всего, второе - текущий день месяца и третье - посетителей сегодня. "Тело" счётчика состоит из двух функций: setvisit() и getvisit(). Перед каждой строкой есть комментарий, поэтому код выглядит довольно большим; зато понятным. Функция setvisit() устанавливает значения счётчика. function setvisit() { // открываем файл counter.txt $fc = fopen("inc/counter.txt","r+"); // считываем "всего" $cs = fgets($fc); // считываем день месяца $day = fgets($fc); // определяем сегодняшнюю дату и.. $today = getdate(); // ..получаем день месяца $mday = $today['mday']; // считываем значение "сегодня" $cd = fgets($fc); // перемещаем указатель файла в начало rewind($fc); // увеличиваем значение "всего" и.. $cs+=1; // ..записываем его fputs($fc, $cs."\n"); // главное. сравниваем день: тот-же или уже другой? if($day == $mday) { // если тот-же - увеличиваем значение "сегодня" и.. $cd += 1; // ..записываем его fputs($fc, $day); } else { // если день новый $day = trim($mday); // записываем день fputs($fc, $day."\n"); // устанавливаем значение "сегодня" равным единице и.. $cd = 1; } // ..записываем его fputs($fc, $cd."\n"); // закрываем counter.txt fclose($fc); } Функция getvisit() считывает значения счётчика. function getvisit() { // открываем файл counter.txt $fc = fopen("inc/counter.txt","r+"); // получаем "всего".. $cs = fgets($fc); // ..день $day = fgets($fc); // ..и "сегодня" $cd = fgets($fc); // закрываем counter.txt fclose($fc); // главное: возвращаем значения "всего" и "сегодня" return array('global' => $cs, 'today' => $cd); } Руководство по эксплуатации счётчика. Чтобы испльзовать счётчик на разных страницах, поместите функции setvisit() и getvisit() в отдельный файл, например counter.php. Следующий код необходимо поместить на главную страницу вашего сайта. Он устанавливает cookie в браузере посетителя, таким образом исключая его из дальнейшего обсчёта, а также устанавливает значения счётчика методом setvisit(). // функции счётчика в файле counter.php include "inc/counter.php"; // проверям, установлены ли cookie под названием beenhere? // название cookie можете выбрать любым if (!isset($HTTP_COOKIE_VARS["beenhere"])) { // если нет - устанавливаем значение cookie равным yes // главное: при этом указываем (при помощи встроенной функции mktime) // время жизни cookie - 1 (одни) сутки setcookie("beenhere","yes",mktime(0,0,0,date("m"), date("d")+1,date("Y"))); // устанавливаем значения счётчика, вызывая setvisit() setvisit(); } Последний штрих; необязательный. Показываем значения счётчика. Следующий код разместите в том месте страницы, где необходимо показать значения счётчика. Надо отметить, что значения можно сделать невидимыми для посетителей, но видимыми для вас. Для этого вы можете вставить этот код в HTML комментирии, например, или в атрибут title любой картинки на вашем сайте. Таким образом вы сможете видеть счётчик, поводив курсором над изображением. // получаем значения счётчика в переменную $c <? $c = getvisit(); ?> // вуаля: сегодня / всего Вы посетитель № <? echo $c['today']." / ".$c['global'] ?> с такого-то числа. Есть вопросы или что-либо не понятно - спрашивайте в форуме "Материалы сайта". Полезные ссылки:
|
Copyright © <LMTH>. Все материалы являются собственностью их авторов.
При перепечатывании ссылка на http://www.magaz.org/ как на источник информации обязательна. Правила использования материалов журнала |