Counter programmieren
Giovanni Rena
- php
0 wahsaga0 Daniel0 andreas
Hallo,
Beim ersten Seitenaufbau
Bei einem neuen Seitenaufruf
was meint ihr, wäre dass so okay? Ich will keinen fertigen benutzen, will das auch mal selbst machen.
Ach ja, die Funktion
$IP = getenv("REMOTE_ADDR");
gibt mir schon die IP des Besuchers, und wenn ich z. B. 10 Besucher habe, gibt sie mir halt die IP des Besuchers der die Seite gerade abegerufen hat. Diese Funktion gibt mir also NICHT die eigene IP.
Danke im Voraus
Gruß Giovanni
hi,
Ach ja, die Funktion
$IP = getenv("REMOTE_ADDR");
gibt mir schon die IP des Besuchers, und wenn ich z. B. 10 Besucher habe, gibt sie mir halt die IP des Besuchers der die Seite gerade abegerufen hat. Diese Funktion gibt mir also NICHT die eigene IP.
was soll sie denn auch sonst machen?
was meinst du, warum die variable REMOTE_ADDR heißt ...?
gruß,
wahsaga
Wollte bloß sichergehen. Thanx
Hi,
Beim ersten Seitenaufbau
- IP Adresse abfragen und in DB speichern mit aktueller Uhrzeit
Ok, ist klar.
Bei einem neuen Seitenaufruf
- IP Adresse abfragen, prüfen ob in DB schon vorhanden
Ok, ist klar.
- wenn ja, prüfen ob die Uhrzeit der IP älter wie 15min ist
Öhm wozu?
- wenn ja, Counter erhöhen
welchen counter?
- Alle Uhrzeiten+IPs die älter wie 15min sind löschen
warum das denn jetzt?
was meint ihr, wäre dass so okay?
Wofür soll es ok sein?
Was ist dein problem?
MfG
Öhm wozu?
- wenn ja, Counter erhöhen
welchen counter?
wahrscheinlich den, der zählt, wieviel assis hier antworten. aktuell wäre der (mit dir) auf '1'.
Was ist dein problem?
das solltest du für dich rausfinden.
andreas
Hi,
Bei einem neuen Seitenaufruf
- IP Adresse abfragen, prüfen ob in DB schon vorhanden
- wenn ja, prüfen ob die Uhrzeit der IP älter wie 15min ist
- wenn ja, Counter erhöhen
- Alle Uhrzeiten+IPs die älter wie 15min sind löschen
Dir ist schon klar das dieser counter, whatever it is, nie hochgezählt
wird, gell. denn es gibt nie eine Uhrzeit+IP die älter ist wie 15minuten
wenn sie gelöscht wird.
MfG
Dir ist schon klar das dieser counter, whatever it is, nie hochgezählt
wird, gell. denn es gibt nie eine Uhrzeit+IP die älter ist wie 15minuten
wenn sie gelöscht wird.
Wenn es die IP in der DB nicht gibt wird der Counter hoch gezählt! Wo liegt das Problem?
Wenn es die IP gibt, und die Uhrzeit ist geringer wie 15min, wird der Counter NICHT hochgezälht. Gleichzeitig kann man alle IPs + Uhrzeiten löschen die älter wie 15min sind denn:
ist wenn ne IP älter wie 15min oder oder icht in der DB enthalten = Counter++
Das mit den 15min war nur so ein Beispiel, ich mach das wies aussieht jetzt sowieso mit Sessions!
Hallo,
ich denke du solltest eine session verwenden http://de2.php.net/manual/en/function.session-start.php. alternativ schreibst du automatisiert einen eindeutigen wert in die url, nach dem du den benutzer identifizierst. z.b.
$id = md5(microtime().getenv("REMOTE_ADDR"));
im grunde ist das aber ähnlich zu der session variante und - abhängig von deinem seitenaufbau - noch aufwändiger.
viele grüsse,
andreas
Hallo Andreas,
okay, hab erstmal das gefunden
http://www.independent-web.de/programmierung/counter/allgemeines.html
wo dass auf Deutsch erklärt wird, eben mit Sessions. Muß es erstmal ausprobieren.
Hallo,
1. Frage
hätte da ein paar Fragen. In dem Beispiel, und auch in anderen wird immer wieder ne Text-Datei vorgeschlagen. ABER, die Datei öffnen, aus ihr lesen, und diese wieder schließen kostet viel Zeit.
Ich hätte da schon ne offene DB Connection, wäre es da nicht aus Geschwindigkeitsgründen besser, ne Tabelle counter dafür zu erstellen und benutzen?
2. Frage
<?php
session_start();
if(!$PHPSESSID)
{
// Zugriff auf DB und Counter erhöhen
echo "new visiter";
} else "old visiter";
session_destroy();
?>
Irgendwie verstehe ich das nicht ganz. Also, mit der session_start() Funktion bekommt der User eine SessionID, diese wird auf dem Server oder in der URL gespeichert. Ruft der User die Seite ein zweites Mal auf, wird KEINE neue SessionID vergebe, oder?
Ist das jetzt wirklich alles so easy, und würde dass da oben funktionieren? Also lokal hats bei mir geklappt.
3. Frage
Was meint ihr, reicht das wenn ich den automatischen Counter auf die Startseite setze? Den auf alle Seiten zu setzen wäre würde ein bißchen Arbeit machen, wäre nicht schlimm, aber macht man das, lohnt sich das? Ich würde "nein" sagen.
Gruß Giovanni
hi,
session_start();
if(!$PHPSESSID)
{
// Zugriff auf DB und Counter erhöhenIrgendwie verstehe ich das nicht ganz. Also, mit der session_start() Funktion bekommt der User eine SessionID, diese wird auf dem Server oder in der URL gespeichert. Ruft der User die Seite ein zweites Mal auf, wird KEINE neue SessionID vergebe, oder?
ja, so die theorie.
Was meint ihr, reicht das wenn ich den automatischen Counter auf die Startseite setze? Den auf alle Seiten zu setzen wäre würde ein bißchen Arbeit machen, wäre nicht schlimm, aber macht man das, lohnt sich das?
das kommt darauf an, nach welchem algorithmus man sich solch eine art von statistik zurechtlügen möchte.
gruß,
wahsaga
das kommt darauf an, nach welchem algorithmus man sich solch eine art von statistik zurechtlügen möchte.
ich muß halt ungefähr wissen wieviel Besucher die Seite hat.
hi,
das kommt darauf an, nach welchem algorithmus man sich solch eine art von statistik zurechtlügen möchte.
ich muß halt ungefähr wissen wieviel Besucher die Seite hat.
dann solltest du das access_log auswerten lassen - software dafür gibt's genug.
stattdessen irgendein halbgares konzept in PHP umzusetzen, ist keine gute alternative.
und insbesondere wirkt es etwas albern, wenn du gestern noch gefragt hast, was an PHP-spielerein "seiten ausbremsen" würde.
gruß,
wahsaga
Okay, ich schau mir mal access_log an, ist das nicht diese Statistik-Datei die in einem Unterverzeichnis (cgi) im Webspace bei den Providern liegt?
Was mich noch interessieren würde, wäre es schon vernünftiger ne DB zu benutzen anstatt ner Datei? Mal ganz davon abgesehen, was und wieviel ich speichern möchte?
Gruß Giovanni