Archiv verlassen und diese Seite im Standarddesign anzeigen : Gesammt + Monats counter
HI @ll
ich suche einen counter der die gesammtbesucher zählt und die monatlichen besucher!!
der monatscounter soll nach jedem monat auf 0 gesetzt werden!!
evtl. die einzelnen monate noch in einer einfachen statistik speichern!!
SOFARJOAT
Ich habe eben mal einen grafikschen Zähler gebastelt, der Gesamtbesucher und Monatsbesucher in einer Grafik ausgibt.
Der Monatswert wird jeden neuen Monat auf Null gesetzt.
Das PHP-Script (z.B. counter.php) muss in einer HTML Datei dann als Grafik aufgerufen werden:
<img src="counter.php">
(ggf. Pfad anpassen)
counter.php<?
// Datei öffnen
// mit @ Fehler unterdrücken, falls Datei noch nicht vorhanden ist
// Wenn Datei nicht vorhanden ist, wird beim ersten Aufruf erzeugt
@$counter = file("counter.txt");
// 1. Zeile = Gesamtzähler
$gesamtzaehler = chop($counter[0]);
// 2. Zeile = Monat, in dem zuletzt gezählt wurde und Monatszähler (mit ; getrennt)
$counter[1] = chop($counter[1]);
// 2. Zeile zerlegen (in Monat und Monatszähler)
list($monat,$monatszaehler) = split(";",$counter[1]);
// Wenn der Wert des Monatszählers noch Wert von letzten Monat ist, dann auf Null setzten
if ($monat != date("n")) $monatszaehler = 0;
// Jeden Zähler um eins erhöhen
++$gesamtzaehler;
++$monatszaehler;
// Zählerwerte mit aktuellem Monat (beim Monatszähler) speichern
$rfile = fopen("counter.txt", "w");
fwrite($rfile, $gesamtzaehler."\r\n".date("n").";".$monatszaehler);
fclose($rfile);
// Grafik generieren
header ("Content-type: image/png");
$x = strlen(intval($gesamtzaehler))*7; // Breite der Grafik abhängig vom Zählerwert
$im = @ImageCreate (54+$x, 28);
$background_color = ImageColorAllocate ($im, 0, 0, 0);
$text_color1 = ImageColorAllocate ($im, 255, 255, 255);
$text_color2 = ImageColorAllocate ($im, 255, 220, 80);
ImageString ($im, 2, 4, 1, "Gesamt:", $text_color1);
ImageString ($im, 3, 50, 1, $gesamtzaehler, $text_color2);
ImageString ($im, 2, 4, 12, " Monat:", $text_color1);
ImageString ($im, 3, 50, 12, $monatszaehler, $text_color2);
ImagePNG ($im);
?>
Ähm ... hatte ich erst überlesen, die Speicherung der einzelnen Monate (Statistik).
Hier die Ergänzung:...
// Wenn der Wert des Monatszählers noch Wert von letzten Monat ist, dann auf Null setzten
if ($monat != date("n")) // <-- Diese Zeile im Script oben durch den neuen Teil hier ersetzen
{
$monatsnamen = Array (1 => "Jan","Feb","März","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez");
$rfile = fopen("counter_stats.txt", "a+");
fwrite($rfile, "$monatsnamen[$monat];$monatszaehler\r\n");
fclose($rfile);
$monatszaehler = 0;
}
...
mit Datenbank?
leg dir eine Tabelle LOGS an mit
create table LOGS (
MONAT timestamp(6),
URL varchar(255),
COUNT bigint unsigned (20),
unique STAT(MONAT, VAR),
index (URL)
);
MONAT als timestamp(6) -> yyyymm
eintragen/erhöhen mit
if (!mysql_query("update LOGS set COUNT=COUNT+1 where URL='$url' and MONAT=now()"))
mysql_query("insert into LOGS (MONAT,URL,COUNT) values(now(), '$url', 1);
Wenn das Erhöhen nicht klappt, ist der Eintrag noch nicht da und wird angelegt.
Gesamte Hits auslesen:
select sum(COUNT) from LOGS where URL='$url'
monatliche Hits:
select date_format('m/Y', MONAT), COUNT from LOGS where URL='$url' order by MONAT
@ mkJack
das ganze funzt!! nur wird die grafik nicht angezeigt!!
und was ich noch vergessen habe:
Das ganze sollte mit IP logging / cookies funzen!!
@ Titus
ne das passt schon!! denn das ganze ist nicht für mich!! da ist es mit txt dateien besser!
SOFARJOAT
Ist bei dir auch der GD Support aktiv?
Ich musste den bei mir lokal nämlich erst aktivieren, war kein Standard.
k.a.
ich habs sowohl lokal als auch online getestet!! unde beidemale gings nicht!!
SOFARJOAT
Wie gesagt, GD Support muß aktiv sein.
Bei mir zuhause mußte ich es aktivieren, bei meinem Provider (Puretec) ist es aktiv.
Ich habe das Script, daß ich gepostet hatte, sowohl lokal als auch online getestet. Das Script funktioniert in beiden Fällen.
Um zu kontrollieren, ob GD aktiv ist, eine PHP-Datei mit diesem Inhalt aufrufen:
<?
phpinfo();
?>
In der Ausgabe dieser Info gibt es einen Abschnitt GD, wenn GD aktiv ist. Check das so mal bei deinem Provider bzw. lokal.
nope!
bei mir gibts kein GD!!
ich habs jetzt lokal / membersindex.info / tripod getestet!!
nirgendwo gehts!!
SOFARJOAT
Also wenn dein Provider es nicht aktiv hat, hast du schlechte Karten.
Bei dir lokal kannst du das wie folgt machen (sofern du Windows benutzt):
1. PHP.INI öffnen (im Ordner WINDOWS bzw. WINNT zu finden)
2. in der Zeile ;extension=php_gd.dll das Semikolon löschen
3. Falls in deinem PHP-Ordner nicht php_gd.dll vorhanden ist, kannst du dir das Ding als ZIP hier (http://phplens.com/dl/php_gd_404.zip) runterladen. Das Teil entzippen und in den PHP-Ordner kopieren.
4. Ggf. Webserver beenden und neu starten
5. Mit phpinfo() checken, ob GD aktiv ist
|
-
- |