Na internetu je nesčetně služeb, které vám nabízí měření návštěvnosti vašich stránek. Ale sám jsem se po čase rozhodl vyzkoušet, jak přesně služby měří. Nelze říci, kdo vám změří počet přístupů přesněji, protože je to každý den jinak a průměrně by rozdíly vyšly na stejno.
Vlastní počítadlo zaručuje, že se při každém načtění specifické IP adresy uloží záznam do databáze. Vy si pak jednoduše necháte spočítat počet záznamů v databázi a je hotovo. Takhle docílíte jasného výsledku, který je určitě přesnější, než měření již zmiňovaných služeb.
Potřebujete dvě databáze. Jedna bude měřit počet návštěv aktuální den a do druhé se bude ukládat historie návštěv, abyste měli přehled.
Databéze si vytvoříte spuštěním tohoto skriptu
$sql = "CREATE TABLE pocitadlo (
ip varchar(255) NOT NULL,
datum int(8) NOT NULL,
PRIMARY KEY (ip)
)";
$dtz = mysql_query($sql) or die (mysql_error());
$sql = "CREATE TABLE pristupy (
pocet int(4) NOT NULL,
datum int(8) NOT NULL,
PRIMARY KEY(datum)
)";
$dtz = mysql_query($sql) or die (mysql_error());
U každého si zjistíte jeho IP adresu a pokud je na stránce daný den poprvé, tak si ji uložíte do databáze, pokud tam už byl, ukládat se nic nebude.
Také musíme nějak zajistit, aby se vždy tabulka "pocitadlo" vyprázdnila a neukládala přístupy i další den. To jsem vyřešil tak, že jakmile se datum položek v DB liší od aktuálního data, tak se spustí skript, který data z tabulky vymaže, ale před tím ještě uloží do tabulky "pristupy" počet záznamů.
Skript na vymazání údajů z tabulky se spustí vždy pouze prvnímu návštěvníkovi webu daný den.
//načteme datum$den = date(d); $mesic = date(m); $rok = date(Y); $datumD = $rok . $mesic . $den; //zjištění IP adresy $ipactual = $_SERVER['REMOTE_ADDR']; //zjistíme si datum uložených položek a aktuální datum s ním porovnáme $vlozit = "SELECT * FROM pocitadlo LIMIT 1"; $dotaz = mysql_query($vlozit); while($r = mysql_fetch_array($dotaz)) { //jestliže se data liší, uložíme do tabulky "pristupy" počet záznamů z tabulky "pristupy" if (($datumD - $r[datum]) != 0) { $vlozit = "SELECT ip FROM pocitadlo"; $dotaz = mysql_query ($vlozit); $vysledek = mysql_num_rows($dotaz); $vlozit = "INSERT INTO pristupy (pocet, datum) VALUES ('$vysledek', '$r[datum]')"; $dotaz = mysql_query ($vlozit); //vymažeme záznamy z tabulky "pocitadlo" $vlozit = "TRUNCATE TABLE pocitadlo"; $dotaz = mysql_query ($vlozit); } } //zjistení zda je uz daná IP uložená v DB $vlozit = "SELECT ip FROM pocitadlo WHERE ip = '$ipactual'"; $vysledky = mysql_query ($vlozit); $vraci = mysql_num_rows($vysledky); //uložení záznamu do tabulky, jestliže daná IP ještě v seznamu není if ($vraci == 0) { $vlozit = "INSERT INTO pocitadlo (ip, datum) VALUES ('$ipactual', '$datumD')"; mysql_query ($vlozit) or die(mysql_error());
Kam vložíte tenhle kod, tam se vám bude zobrazovat statistika přístupů. Můžete si případně její HTML výstup upravit, dle libosti.
Nezahrnul jsem to těchto skriptů připojení k databázi, jestli nevíte jak se připojit, tak si přečtěte základy MySQL.
//počet záznamů aktuální den.. tj. počet řádků z tabulky "pocitadlo"$vlozit = "SELECT datum FROM pocitadlo"; $vysledky = mysql_query ($vlozit) or die (mysql_error()); $navstevydnes = mysql_num_rows($vysledky); //vypsání 7 záznamů z tabulky "pristupy".. taková malá historie echo "<h4>Statistika přístupů</h4><p><b>Dnes:</b> $navstevydnes</p></div><h4>Počet přístupů za posledních 7 dní:</h4>"; $vlozit = "SELECT * FROM pristupy ORDER BY datum DESC LIMIT 0, 7"; $vysledky = mysql_query ($vlozit) or die (mysql_error()); while ($celkem = mysql_fetch_array($vysledky)) { extract($celkem); echo "<p> $datum - <b>$pocet</b></p>"; }