Counter Besucher Heute,gestern

2Pac

Erfahrenes Mitglied
Hallo Leute!

Ich suche ein Script, welches die Besucher von heute und von gestern auflistet und die gesamtbesucher, mit Reloadsperre. Jedoch wollte ich kein fertiges nehmen. Ich vertrau da nicht so drauf. Wills lieber selber schreiben. Aber wie stell ich das an , das er die User die heute und gestern drauf waren zählt? Ich meine ich kann doch keine Tabelle Counter erstellen und dann für jeden Tag nen neuen Eintrag machen. Ist doch viel zu umständlich, muss doch einfacher gehen. Ob das ganze auf Textdatein oder auf MySQL basiert ist mir da relative Ladde... Wäre nett wenn mir jemand helfen kann. Hab schon im Forum geguckt per Suchfunktion also bitte nicht mecker ;)
 
Nö für jeden Tag ne neue Tabelle wäre quatsch!
Eine einfache Möglichkeit wäre die, dass du einen Datensatz anlegst für heute (datum, besucher), einen für gestern (datum, besucher) und einen für gesamt (besucher). Du zählst dann z.B. alle Besucher von heute, also erhöhst eine Zahl in dem Datensatz immer um eins. Wenn der Tag rum ist, dann speicherst du die Zahl von ehemals "heute" in den Datensatz von gestern und fängst bei "heute" wieder neu an zu zählen. Achja und natürlich bei jedem neuen Besucher die Zahl der Gesamtbesucher um eins erhöhen!
Codeschnipsel für IP-Sperren müssten hier im Forum genug rumfliegen.

Das wäre jetzt so meine spontane Idee für die Umsetzung eines solchen Counter-Scripts.
 
also ich würde/habe es so gemacht und bin sehr zufrieden:
eine tabelle mit ip,zeit und date oder so
in ip werden *überraschung* die ips gespeihert (wenn se noch ent drin stehen) unter time die time() wann die user auf der seite waren
(das braucht man beim auslesen)
SELECT WHERE time >time-10minuten sozusagen ;)
dann hätte man die online user
unter date wird der jahrestag gespeichert (ich habs mit getdate gemacht - date geht glaub ich auch)
dann lässt sich auch leicht gestern und heute machen
die gesammtuser werden auch in diese tabelle eingetragen: sicher nicht die elleganteste methode aber sie funktioniert.
eine row (z.b. id=1) hat statt ner ip eben die gesammtbesucherzahl
besucher von vorgestern werden gelöscht - außer man will die auch anzeigen! dadurch wird die db net zu groß
man kann (hab ich ;) ) auch noch ne col 'membername' oder so einfügen um so evtl. members die gerade online sind anzuzeigen

soweit ich weis wird die ip auch wenn alte einträge gelöscht werden nach oben vortgesetzt => man könnte auch die ip als gesammtmemberzahl nehmen, da ich aber nicht gerade der proficoder bin und damals noch viel weniger ahnung hatte hab ich da irgendwie nicht so drauf vertraut
 
Hmmmm was mach ich denn quasi mit dem quelltext:
PHP:
<? 
include("mysqlconnect.php"); 
$zeit = time(); 
$sql = mysql_query("SELECT * FROM ip WHERE ip='$REMOTE_ADDR'") OR die(mysql_error()); 
    if(mysql_num_rows($sql) < 1) { 
    mysql_query("UPDATE hits SET hits=hits+1") OR die(mysql_error()); 
    mysql_query("INSERT INTO ip (zeit, ip) VALUES ('$zeit', '$REMOTE_ADDR')") OR die(mysql_error()); 
} 

$del = $zeit - 120; 
mysql_query("DELETE FROM ip WHERE zeit < $del") OR die(mysql_error()); 

$sql = mysql_query("SELECT * FROM hits") OR die(mysql_error()); 
$counterhits = mysql_fetch_array($sql); 
mysql_close(); 
?>
Das is jez besucher Counter mit Sperre, aber wie setz ich das Besucher heut und gestern rein könnt ihr mirn quelltext geben hab net so den plan von time date etc...
 
@Harrier: Deine Lösung würde aber wahrscheinlich bei Seiten mit mehreren hundert oder sogar tausend Besuchern am Tag unheimlich viel an Geschwindigkeit einbüßen (denn pro Besucher ein datensatz, d.h. für heute und gestern z.B. zusammen 2000 Datensätze!).
Naja, das nur mal am Rande ;)
 
Original geschrieben von ludz

Eine einfache Möglichkeit wäre die, dass du einen Datensatz anlegst für heute (datum, besucher), einen für gestern (datum, besucher) und einen für gesamt (besucher). Du zählst dann z.B. alle Besucher von heute, also erhöhst eine Zahl in dem Datensatz immer um eins. Wenn der Tag rum ist, dann speicherst du die Zahl von ehemals "heute" in den Datensatz von gestern und fängst bei "heute" wieder neu an zu zählen.

Da würde mich mal interessieren wie soll ich das erkennen das ein Tag rum ist bzw. der Tag, das umwandeln per Timestamp etc is mir jetzt klar durch loki... aber Wie erkennt das Script wenn ein Tag rum ist? Einer ne Idee wie ich dies realisieren kann ?
 
Zuletzt bearbeitet:
im DELETE Syntax deltest Du einfach alles was aelter als 2 Tage ist und in Deinem Select Syntax kannst Du mit folgendem beispiel alles ausgeben, was ab dem Aktuellen Datum in der Datenbank gespiechert ist.

Beispiel:
Code:
WHERE datum >= CURRENT_DATE()

das nur als kleinen Denkanstoss ;)
 
Ersteinmal sry 4 Doppelpost aber des muss extra stehn.

Loki ich bin nicht sonderlich gut im Umgang mit Datumssachen. Und ich zergrübel mir grad die Birne kannste mir nicht nen Theoretischen Aufbau des ganzen sagen? Das umsetzten bekomm ich sicher hin durch suchen im Forum etc. Weil ich komm grad 0 weiter.

Danke MfG 2Pac
 
Zurück