Giovanni Rena: Counter programmieren

Hallo,

Beim ersten Seitenaufbau

  • IP Adresse abfragen und in DB speichern mit aktueller Uhrzeit

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

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

  1. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Wollte bloß sichergehen. Thanx

  2. 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

    1. Ö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

      1. 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

        1. 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!

  3. 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

    1. 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.

      1. 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

        1. hi,

          session_start();
          if(!$PHPSESSID)
          {
               // Zugriff auf DB und Counter erhöhen

          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?

          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

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. 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.

            1. 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

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. 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