webForumDet fria alternativet

Statistikscript...(ändra till unikabesökare)

PHP

2 svar · 358 visningar · startad av slow

Medlem sedan apr. 2004148 inlägg
Frågan#1

Försöker hjälpa en kompis med hans statistikscript. Han vill att det ska räkna unika besökare istället för nu när den visar sidvisningar.

//Sidan som visar statistiken
<?php // total
	$db = new DB();
	$db->query("SELECT time FROM ".DB_PREFIX."_stats");
	$totalPagesViewed = $db->num_rows();
	echo _STATS_TOTALNUMBERPAGES." : $totalPagesViewed";
?>
</p>

<p class="smallText"> 
<?php // graph by day
	$db = new DB();
	$db->query("SELECT time FROM ".DB_PREFIX."_stats GROUP BY time ORDER BY time DESC");
	
	$db2 = new DB();
	while ($i = $db->next_record()) {
		$db2->query("SELECT pageId FROM ".DB_PREFIX."_stats WHERE time = '$i[time]'");
		$pagesViewed = $db2->num_rows();
		echo "$i[time] ";
		echo "<img src=\"inc/admin/pixRed.gif\" width=\"$pagesViewed\" height=\"3\" align=\"middle\">";
		echo "  ($pagesViewed)  <br>";
	}
	$db2->close();
	
	$db->close();
?>

Här är koden som loggar...

<?
//loggningen
$clientIp = getenv ("REMOTE_ADDR"); 
	// Referer
	$url = parse_url($HTTP_REFERER);
	$ref = $url[host];

	$db = new DB();
	$db->query("INSERT INTO ".DB_PREFIX."_stats (time, pageId, clientIp, referer) VALUES (NOW(), '$id', '$clientIp', '$ref') ");
	$db->close();
}
?>

Någon med något förslag?

Medlem sedan jan. 2002341 inlägg
#2

jag vet inte på rak arm, men ladda ner bbclone (googla så hittar du). Det är en himla snygg statistik-sida, och kollar man källkoden ser man nog hur det ska gå till.

Medlem sedan sep. 200436 inlägg
#3

Det du gör är att du sparar även ip för varje besökare i ett fält i databasen. Sedan kollar du om besökarens ip finns i databasen, om det gör det så ska du såklart inte lägga till en ny rad men finns det inte gör du som nu. Att bara räkna varje ip en gång håller ju när sidan varit uppe i ett antal månader. Då kan du A)
gör ett fält för antal besök av det ip't i databasen, sedan kan du vid varje månadsslut tabort alla ip'n i databasen och spara antalet unika besökare på en särskild rad.

Alternativ B är att göra ett fält för för senaste besök och ett för antal besök. Då kan du kolla om det var längre än en månad sedan ett visst ip var inne på sidan och då registrera ytterliggare ett besök från det ip't. Senaste besök ska bara uppdateras när man registrerar ett unikt besök från det ip't

besökarens ip finns i:

$_SERVER['REMOTE_ADDR']

Hoppas detta kan vara till någon hjälp

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)