Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Počítadlo přístupů na web

Ahoj,

chtěl bych si napsat počítadlo přístupů na web, (JS,PHP,MYSQL umím) ale nevím na jakým principu to udělat,
napadlo mě že by se při prvním načtení vytvořila cookie s platností 24 hodin a započítal by se přístup, dokud by cookie platila tak by se další nezapočítával, ale přinejmenším IE9, a možná i jiní uživatelé mají cookies blokované, takže by se nezapočítaly všechny přístupy všech,
a nebo to udělat přes zjištění IP adresy a času, zapsání do databáze a pak porovnávat získanou ip a čas návštěvy s databází?
a nebo to mám udělat uplně jinak?

díky

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Chtěl jsem aby se návštěva z jedné IP počítala jen jednou denně. Moje řešení níže umí počítat celko… nový
Banshee 30.10.2011 19:30
Banshee
nejsem zadny profik ale po vlozeni kodu jsem zjistil ze tam neco faliruje nejdriv nazvy tabulek a pa… nový
matesking 28.10.2012 22:51
matesking
Chyba může být v čemkoliv. Když se neobtěžuješ napsat, co prohlížeč hlásí a jak jsi přesně postupova… nový
host 28.10.2012 22:54
host
Já bych si tam dal Toplist a je to bez práce. Navíc tam jsou různé statistiky. Prima to bývá také u… poslední
Kráťa 28.10.2012 22:55
Kráťa

Chtěl jsem aby se návštěva z jedné IP počítala jen jednou denně.

Moje řešení níže umí počítat celkový počet návštěv (z jedné IP jedna denně) a počet návštěv v aktuální den (opět z jedné IP jedna denně)

Tabulka SQL

SET NAMES utf8;

SET SQL_MODE='';

USE `counter`;

DROP TABLE IF EXISTS `items`;

CREATE TABLE `items` (
	`ip` varchar(254) NOT NULL DEFAULT '',
	`day` tinyint(5) DEFAULT '0',
	PRIMARY KEY (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `counts`;

CREATE TABLE `counts` (
	`id` int(11) DEFAULT '0',
	`count_all` int(11) UNSIGNED DEFAULT '0',
	`count_today` int(11) UNSIGNED DEFAULT '0',
	`day_today` tinyint(5) DEFAULT '0',
	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

PHP

<?
 $spojeni = mysql_connect("127.0.0.1","root","root" ) or die ('<strong>Critical error!</strong><br>Nepodarilo se pripojit k databazi!');
  mysql_select_db("název databáze", $spojeni) or die ('Spatne zadana databaze v db.php');
  mysql_query("SET character_set_client=utf8");
  mysql_query("SET character_set_connection=utf8");
  mysql_query("SET character_set_results=utf8");
  mysql_query("set names 'utf8'");

$ip_now = getenv('REMOTE_ADDR');
$day_now = date("d" ,time());

$query = mysql_query("SELECT `day_today` FROM `visits_counts` WHERE `id` = '1' LIMIT 1;");
$day_today = mysql_result($query, 0);

if($day_today != $day_now)
	{
	mysql_query("UPDATE `visits_counts` SET `count_today` = '0' WHERE `id` = '1' ;");
	mysql_query("UPDATE `visits_counts` SET `day_today` = '$day_now' WHERE `id` = '1' ;");
	}

$query2 = mysql_query("SELECT * FROM `visits_items` WHERE `ip` = '$ip_now' ;");
$row= mysql_fetch_array($query2);

if ($row == 0) 
	{
	mysql_query("INSERT IGNORE INTO `visits_items` VALUES ('$ip_now', '$day_now') ;");
	mysql_query("UPDATE `visits_counts` SET `count_all` = `count_all` + '1' WHERE `id` = '1' ;");
	mysql_query("UPDATE `visits_counts` SET `count_today` = `count_today` + '1' WHERE `id` = '1' ;");
	}
else
	{
	if ($row['day'] != $day_now)
		{
		mysql_query("UPDATE `visits_items` SET `day` = '$day_now' WHERE `id` = '$row[ip]' ;");
		mysql_query("UPDATE `visits_counts` SET `count_all` = `count_all` + '1' WHERE `id` = '1' ;");
		mysql_query("UPDATE `visits_counts` SET `count_today` = `count_today` + '1' WHERE `id` = '1' ;");
		}
	}

if ($day_now >= 3)
	{
	mysql_query("DELETE * FROM `visits_items` WHERE `day` > '$day_now' ;");
	$day_x = $day_now - 3;
	mysql_query("DELETE * FROM `visits_items` WHERE `day` < '$day_x' ;");
	}

$query3 = mysql_query("SELECT `count_all`,`count_today` FROM `visits_counts` WHERE `id` = '1' ;");
$visits = mysql_fetch_array($query3);


print "Návštěvy dnes: ".$visits[0]."<br />Návštěvy celkem:".$visits[1]."</div>"."\n";

?>

Já bych si tam dal Toplist a je to bez práce. Navíc tam jsou různé statistiky.
Prima to bývá také u statistik poskytovaných hostingem, včetně například přístupů z vyhledávačů a jaká se hledala fráze.

Zpět do poradny Odpovědět na původní otázku Nahoru