Michael W.: Counter

Hallo,

Ich habe habe hier ein Counterscript (das auch gut funktioniert)

<?php

$file = "counter.txt";

$data = fopen($file, "r");
$count = fread($data, filesize($file));
fclose($data);

$count = ++$count;
echo $count;

$data = fopen($file, "w+");
fwrite($data, $count);
fclose($data);

?>

(wird die seite aufgerufen auf der sich dieses script befindet, wird in der counter.txt immer +1 dazu gezählt. schön !

ich möchte jetzt dieses script auf jede Seite auf meiner homepage stellen, aber ohne das der counter angezeigt wird (er soll nur zählen). Auf einer statistik-Seite möchte ich dann wiederum alle aufrufen
Also:

seite1.htm : counter     1 nicht anzeigen, zählen
seite2.htm : counter     2 nicht anzeigen, zählen
seite3.htm : counter     3 nicht anzeigen, zählen

seite4.htm : counter 1,2,3 anzeigen, nicht zählen

wo muss ich im script was verändern um
a) das nicht gezählt wird, aber er angeizeigt wird und
b) das er nicht angeizeigt wird, aber zählt

??????

Danke

  1. Hi!

    seite1.htm : counter     1 nicht anzeigen, zählen
    seite2.htm : counter     2 nicht anzeigen, zählen
    seite3.htm : counter     3 nicht anzeigen, zählen

    seite4.htm : counter 1,2,3 anzeigen, nicht zählen

    wo muss ich im script was verändern um
    a) das nicht gezählt wird, aber er angeizeigt wird und
    b) das er nicht angeizeigt wird, aber zählt

    Du machst einfach auf den ersten drei Seiten dasselbe Script wie oben, nur jeweils mit einer anderen Datei, in die geschrieben wird, wenn Du das nicht anzeiegn willst läßt Du halt "echo..." weg, auf der 4. Seite kannst Du dann halt 3 Dateien öffnen, genau wie Du oben imme reine Datei öffnest, das halt mit 3 Dateien, das in 3 Variablen schreiben, und die kannst Du dann wieder mit echo anzeigen!
    Grüße
    Andreas

    1. Also wenn ich das richtig verstanden habe ist

      echo $count;       = anzeigen und
      $count = ++$count; = schreiben

      !!???

      1. Also wenn ich das richtig verstanden habe ist

        ich glaube nicht ;-)

        echo $count;       = anzeigen und

        richtig

        $count = ++$count; = schreiben

        ? Was steht denn da? Wenn echo $count die Varieble $count anzeigt, kannst Du Dir da ja im prinzip anhand der Zeichen ohne jegliche Programmierkenntnisse selbst überlegen, oder?

        // Auswahl der Datei zum öffnen und ggfs schreiben
        $file = "counter.txt";

        // Datei($file) öffnen zum lesen("r")
        $data = fopen($file, "r");

        // Inhalt in die Variable $count schreiben
        $count = fread($data, filesize($file));

        // Datei schließen
        fclose($data);

        // Variable $count um 1 erhöhen
        $count = ++$count;

        // Die Variable $count anzeigen
        echo $count;

        // Datei($file) öffnen zum schreiben("w")
        $data = fopen($file, "w+");

        // letzten Inhalt der Variable $count in die zuvor geöffnete Datei schreiben
        fwrite($data, $count);

        // Datei wieder schließen
        fclose($data);

        Was Du jetzt machen mußt kannst Du Dir ja überlegen :-)

        Auch immer ganz hilfreich, das Manual ind deutsch: http://www.php.net/manual/de/

        oben links auf der Seite ist ein Eingabe-Feld(lookup), da kannst Du jede dor obigen Funktionen eingeben, und da steht dann genau was die Funktion macht, z.B. mal 'echo', oder 'fopen' eingeben!

        Viele Grüße
        Andreas

        1. Mit PHP hatte ich halt bisher nichts zu tun, aber so sollte es gehen *hoff*

          schreiben ohne anzeige:
          <?php

          $file = "counter.txt";

          $data = fopen($file, "r");
          $count = fread($data, filesize($file));
          fclose($data);

          $count = ++$count;

          $data = fopen($file, "w+");
          fwrite($data, $count);
          fclose($data);

          ?>
          (ohne echo)
          ____________
          anzeigen ohne schreiben:

          <?php

          $file = "counter.txt";

          $data = fopen($file, "r");
          $count = fread($data, filesize($file));
          fclose($data);

          echo $count;

          ?>

          obwohl man im prinzip ja nur $count = ++$count; weglassen müsste, weil das ja den count um 1 erhöt.

          ist das jetzt richtig ??

          und noch ne frage:
          wie kann ich jetzt den counterstand mit einem formular beliebig setzen ?

          1. Mit PHP hatte ich halt bisher nichts zu tun, aber so sollte es gehen *hoff*

            sieht schon viel besser aus:-)

            schreiben ohne anzeige:
            <?php

            $file = "counter.txt";

            $data = fopen($file, "r");
            $count = fread($data, filesize($file));
            fclose($data);

            $count = ++$count;

            $data = fopen($file, "w+");
            fwrite($data, $count);
            fclose($data);

            ?>
            (ohne echo)

            genau!

            ____________
            anzeigen ohne schreiben:

            <?php

            $file = "counter.txt";

            $data = fopen($file, "r");
            $count = fread($data, filesize($file));
            fclose($data);

            echo $count;

            ?>

            obwohl man im prinzip ja nur $count = ++$count; weglassen müsste, weil das ja den count um 1 erhöt.

            Ja, aber wäre ziemlich unnötig die Datei zu öffnen, den Wert auszulesen, wieder zu schließen, den Wert anzeigen, und dann wieder öffnen, den angezeigten Wert(derselbe der schon drinsteht) Wieder zu schreeiben und wieder zu schließen, oder?

            ist das jetzt richtig ??

            ja

            und noch ne frage:
            wie kann ich jetzt den counterstand mit einem formular beliebig setzen ?

            nanana, sowas macht man aber nicht! Das einfachste wäre einfach einen Wert direkt in die Counter.txt eingeben ;-)
            mit nem Formular machst Du das, indem Du in der Formular-action <? echo $PHP_SELF ?> angibst, dadurch werden die Formulardaten an das selbe PHP-Script geschickt, dann mußt Du genau wie beim automatischen erhöhen vorgehen, nur das Du

            $data = fopen($file, "r");
            $count = fread($data, filesize($file));
            fclose($data);
            $count = ++$count;

            durch

            $count = $_POST["name_des_textfeldes"];

            ersetzt. (wenn Du die Formulardaten nicht per POST sondern per GET versendest mußt Du $_POST durch $_GET ersetzen)  Wie gesagt, das muß in die Selbe php-Datei, wie das Formular selbst!

            Aber nicht mißbrauchen ;-)

            Grüße
            Andreas

            1. und noch ne frage:
              wie kann ich jetzt den counterstand mit einem formular beliebig setzen ?
              nanana, sowas macht man aber nicht! Das einfachste wäre einfach einen Wert direkt in die Counter.txt eingeben ;-)
              mit nem Formular machst Du das, indem Du in der Formular-action <? echo $PHP_SELF ?> angibst, dadurch werden die Formulardaten an das selbe PHP-Script geschickt, dann mußt Du genau wie beim automatischen erhöhen vorgehen, nur das Du

              $data = fopen($file, "r");
              $count = fread($data, filesize($file));
              fclose($data);
              $count = ++$count;

              durch

              $count = $_POST["name_des_textfeldes"];

              ersetzt. (wenn Du die Formulardaten nicht per POST sondern per GET versendest mußt Du $_POST durch $_GET ersetzen)  Wie gesagt, das muß in die Selbe php-Datei, wie das Formular selbst!

              ne ich meine die werte die auf seite4.htm (wie im beispiel) angezeigt werden, sollen von seite5.htm ferngesteuert werden können.

              wie geht das mit einem formular (ob das jetzt betrug ist oder nicht, würde eben das prinzip gerne kennenlernen  und prinziepien lassen sich am besten mit ausführlichen beispielen erklären)

              Danke.

  2. Entweder Du schreibst zwei Scripte oder Du wertest den Referrer aus.

    ...
    if ($HTTP_REFERER=="http://wasweisichweo/seite.php") {echo $count; }
    if ($HTTP_REFERER<>"http://wasweisichweo/seite.php") {echo ""; }
    ...

    1. Entweder Du schreibst zwei Scripte oder Du wertest den Referrer aus.

      ...
      if ($HTTP_REFERER=="http://wasweisichweo/seite.php") {echo $count; }
      if ($HTTP_REFERER<>"http://wasweisichweo/seite.php") {echo ""; }
      ...

      Alternativ kannst Du es aber auch mit dem

      $REDIRECT_SCRIPT_URL oder $REDIRECT_SCRIPT_URI

      versuchen, nämlich dann, wenn Du das PHP- Script "inline" benutzt. Nur sollten Deine Seiten dann xyz.php heissen...

      fastix®

      1. Hi!

        ...
        if ($HTTP_REFERER=="http://wasweisichweo/seite.php") {echo $count; }
        if ($HTTP_REFERER<>"http://wasweisichweo/seite.php") {echo ""; }
        ...

        Referer ist doch nicht wirklich sicher, oder? Der kommt ja vom Browser und muß nicht stimmen! Außedem versteh ich das Prinzip dahinter nicht, Was habe ich davon zu wissen, von welcher Seite der User kommt???

        Außerdem will er doch auf 3 Seiten eigene Counter haben, und die aber nicht anzeigen, sondern gesammelt auf einer Seite - wenn ich das richtig verstanden habe.

        Grüße
        Andreas

        1. Referer ist doch nicht wirklich sicher, oder? Der kommt ja vom Browser und muß nicht stimmen! Außedem versteh ich das Prinzip dahinter nicht, Was habe ich davon zu wissen, von welcher Seite der User kommt???

          Manche Counter werden von einem Script ausgeliefert:

          <img src="http://xyz.de/abc.php"> Da muss der Zähler dann erfahren, woher der Aufruf kommt.

          Nein sicher ist das nicht. Der Referrer lässt sich mit vielen Browsern und Software (Junkbuster, Webwasher) unterdrücken. Deshalb liest man dann:

          <img src="http://xyz.de/abc.php?custom_id=1234567">

          Aber soviel Ruß würde ich nicht machen, wenn PHP auf dem eigenen Server läuft.

          Programmieren eines Counters: ich werde es in meine Seminare aufnehmen. Scheint beliebtes Thema zu sein...

          fastix