Skrypty > eCounter
Ten skrypt potrafi zliczać wszystkie odsłony, unikalne wizyty, wizyty dzisiaj oraz liczbę gości online, ponadto wyświetla liczbę wczorajszych odwiedzin oraz największą zanotowaną liczbę odwiedzin wraz z datą.
Poniższy fragment kodu najlepiej umieścić gdzieś na początku kodu strony:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
<?php
//========eCounter v2.5.5========
// Autor: Emdek <http://emdek.cba.pl>
// Licencja: GPL
function counter ($CFile) {
$CData = unserialize (file_get_contents ($CFile));
$CData[0][2]++;
if (($Num = (floor (time () / 86400)) - floor ($CData[0][0] / 86400)) > 0) $CData[1] = ($Num > 1)?array_fill (0, 2, 0):array ($CData[1][1], 0);
if (!$CData[3][$_SERVER['REMOTE_ADDR']]) {
$CData[0][1]++;
$CData[1][1]++;
$CData[3][$_SERVER['REMOTE_ADDR']][0] = time ();
}
$CData[0][0] = $CData[3][$_SERVER['REMOTE_ADDR']][1] = time ();
foreach ($CData[3] as $IP => $Time) {
if ((time () - $Time[0]) > 86400) unset ($CData[3][$IP]);
if ((time () - $Time[1]) < 300) $Online++;
}
if ($CData[1][1] > $CData[2][0]) $CData[2] = array ($CData[1][1], time ());
$File = fopen ($CFile, 'a');
flock ($File, LOCK_EX);
fseek ($File, 0);
ftruncate ($File, 0);
fwrite ($File, serialize ($CData));
fflush ($File);
flock ($File, LOCK_UN);
fclose ($File);
return ('Odsłony: '.(int) $CData[0][2].'<br />Unikalne: '.(int) $CData[0][1].'<br />Dzisiaj: '.(int) $CData[1][1].'<br />Wczoraj: '.(int) $CData[1][0].'<br />Online: '.(int) $Online.'<br />Najwięcej odwiedzin: '.date ('d-m-Y', $CData[2][1]).' ('.(int) $CData[2][0].")\n".'<!-- Powered by eCounter -->'."\n");
}
?>
Następnie w miejscu w którym ma być widoczny licznik wklejamy (jako parametr podajemy ścieżkę dostępu do pliku danych):
1
<?= counter ('counterdata.txt') ?>
Aby skrypt mógł zacząć zliczać wizyty należy utworzyć plik danych licznika (o dowolnej nazwie) posiadający CHMOD 666.
Jeśli Twój serwer obsługuje PHP 5, to możesz użyć funkcji file_put_contents do zapisywania danych.
Ostatnia aktualizacja: piątek 30.12.2005, 11:24
Wszystko powinno się robić tak prosto, jak tylko to jest możliwe - ale nie prościej. Albert Einstein