PHP +MYSQL | Seitenklicks auf IP basierend

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hi,

ich wollte so ne Klickstatistik einführen, aber möchte nicht, das man mit jedem Seiten aktualisieren einen neuen Klick in die Datenbank einträgt...

Es gibt zwar unzählige fertige Counter aber davon halte ich nix und möchte das gerne mal selbst mit meiner Datenbank + PHP hin bekommen...

Hab aber leider überhaupt keinen Ansatz, bzw. das Knowhow für die PHP-Befehle, aber ich weiß net wie ich erst prüfen kann ob die IP des Users die Seite schon mal angeklickt hat...

hoffe ihr könnt mir weiter helfen...

Mir selbst würde nur Spontan einfallen mit dem Befehl $_SERVER['...'] die IP abzufragen und dann in die Datenbank einzutragen und dann beim Seitenaufruf die aktuelle IP mit der in der Datenbank abzufragen... aber das ist doch ein riesen aufwand, wenn z.B. 1000 Leute die Seite anklicken, für jeden die IP zu speichern um die Vergleichen zu können...

Computerbase hat die Klicks einfach nur so gemacht das die das einfach bei jedem Aktualisieren um 1 erhöhen...

naja wenn keiner ne gute performante Lösung weiß, dann werd ich das wohl dann doch so machen müssen^^
Ergänzung ()

Also ich hab schon mal ne aktzeptable Lösung gefunden...

Hab einfach auf ne Zwischenseite weitergeleitet, wo der Klick um 1 erhöht wird und dann auf die Zielseite weiterleitet und wenn man dann die Zielseite immer wieder aktualisiert, dann erhöht sich der Klick nicht :)

Falls jemand noch nen besseren Vorschlag hat, ist der immer Willkommen ;)
 
Also ich habe das auch so umgsetzt... denke nicht, dass es da gross was anderes gibt...
 
Hallo,

Alternativ zur IP könntest du auch mit sessions arbeiten.
PHP:
<?
session_start();
if(!isset($_SESSION['firsttime']))
{
	$_SESSION['firsttime'] = false;
	//BESUCHER ++
	echo "NEU";
	
}
 
?>

Damit erfasst du den User nur einmal, solange die Session aktiv ist. Normalerweise wird die Session zerstört sobald der Browser geschlossen wird oder die Zeit abgelaufen ist. So wird beim Aktualisieren nichts erhöht, aber jeder neue Besuch erfasst. Sollte ein User also vormittags und nachmittags vorbeischauen, wird er zweimal erfasst. Allerdings werden hier auch User erfasst, die alle die gleiche IP verwenden (z.B. Internetcafe)... Hier noch eventuell eine kleine Lektüre -> Hier

mfg
mitos
 
Zuletzt bearbeitet:
Ich habe es so gemacht:

PHP:
function counter() {
//IP ermittel
$ip = $_SERVER['REMOTE_ADDR'];
//speichere IP des Besuchers in der Datenbank, wenn noch nicht vorhanden!
//setze counter +1 Wenn IP noch nicht in der Datenbank ist! 
$a = (mysql_fetch_row(mysql_query("select count(*) from counter_ip where ip='$ip'"))) or die(mysql_error());
if ($a[0] == 0) {
mysql_query("UPDATE `counter` SET `besuche`= besuche +1 LIMIT 1") or die(mysql_error());
}
 $a = (mysql_fetch_row(mysql_query("select count(*) from counter_ip where ip='$ip'"))) or die(mysql_error());
if ($a[0] == 0) {
$date = get_date_time(time());
$eintrag = "INSERT INTO counter_ip ( ip, added ) VALUES 
( 
'".$ip."', 
'".$date."' 
)";
mysql_query($eintrag) or die(mysql_error()); 
}
//Lösche alte einträge nach 3Tagen, da sollten die Ips auch nicht mehr benutzt werden, um das zumüllen der DB zu vermeiden!
$secs = 259200;
$dt = sqlesc(get_date_time(time() - $secs));
$sql =("DELETE FROM counter_ip WHERE added <= $dt"); 
mysql_query($sql) or die(mysql_error());
}

Vielleicht als kleine Anregung.
 
Zurück
Oben