Ankündigung

Einklappen
Keine Ankündigung bisher.

Klick Counter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Klick Counter

    Hallo

    Ich habe hier einen einfachen Klick Conter gefunden und ihn etwas geändert.
    Es gibt aber noch Probleme.
    Ich habe schon versucht mit dem Autor Kontakt aufzunehmen, ist mir aber nicht gelungen.
    Auch eine Anmeldung im Forum hat zwar Funktioniert, aber schreiben kann ich nichts und auf eine Kontaktanfrage gab es keine Antword.

    Das ganze ist kein Meister Stück und vielleicht hat ja jemand Lust und Interesse das mal zu Überarbeiten.
    Mein Problem ist noch, das ich Seiten mit wechselnden Datum habe und oder Besucher noch Seiten Im Cache haben.
    Das verfälscht natürlich die Anzeige.

    hier mal die Anzeige aus der Testseite
    Richtige: monat aktuelles Datum.txt
    Falsche: monat2.php?datum=2022-07-28.php.txt

    Ich habe mal eine Testseite und eine Testanzeige erstellt, damit nicht alle auf meine Seite Klcken.

    mfg
    Michael

    PHP-Code:
    $datum date("Y-m-d");
    /*   einfacher Download-Counter ohne Datenbank auf Textdateienbasis
    Autor: Julian (http://forum.jswelt.de/members/julian.html)
    !!!!! Dieser Vermerk darf nicht entfernt werden !!!!!
    */
    $filename $_GET['id']; // holt sich den Dateinamen aus der URL
    // ----- URL aus Link -----
    $finden = array(
          
    "index.php",
          
    "news.php",
          
    "seite1.php",
          
    "seite2.php",
          
    "monat.php?datum=$datum",
          
    "impressum.php"
    );
    // ----- txt Dateiname der anstatt der URL erzeugt werden soll -----
    $ersetzen = array(
            
    "Startseite",
            
    "News",
            
    "Seite 1",
            
    "Seite 2",
            
    "monat aktuelles Datum",
            
    "kein Impressum"
    );
    $filenameneu str_replace($finden$ersetzen$filename); // ersetzt die URL gegen einen Anzeige Text in der Statistik
    if (!empty($filename)) {
             
    //wenn noch keine Statistik angelegt, Zähler bei 0 beginnen
             
    $counter = @file_get_contents("statistics/$filenameneu.txt");
             if (
    $counter == "") {
                 
    $counter 0;
             }
             
    //bei jedem Download Zähler um 1 erhöhen
              
    $counter++;
             
    //Downloadanzahl in Textdatei schreiben mit Namen "Dateiname".txt
             
    @file_put_contents("statistics/$filenameneu.txt"$counter);
             
    //zum angeforderten Datei-Download weiterleiten
              
    header("Location: $filename");
         } else { 
    //wenn in der URL kein Dateiname angegeben, Fehlermeldung anzeigen
             
    echo "Fehler: Keine gültige Download-ID!";      } 
    Hier noch die Anzeige

    PHP-Code:
    <!DOCTYPE html>
    <html lang="de" dir="ltr">

    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Statistic Testseite</title>

        <style>
            body {
                font-family: Helvetica, sans-serif;
                text-align: center;
                background-color: darkgrey;

            }

            .inhalt {
                border: 1px solid black;
                padding: 5px;
                margin: 20px;
                width: 1210px;
                font-size: 16px;
                display: flex;
                flex-direction: column;
                background-color: #dcdcdc;
            }

            .ueberschrift {
                background-color: coral;
                border: 1px solid black;
                margin: 2px 2px 10px;
                padding: 5px;
                text-align: center;
                font-size: 20px;
                font-weight: bold;
                letter-spacing: 0.2em;

            }

            td,
            th {
                border-collapse: collapse;
                border: thin solid;
                background-color: #FFEFD5;
            }

            td.tdlinks {
                text-align: left;
            }

            hr {
                height: 14px;
                margin-left: 2px;
                box-shadow: 3px 3px 3px rgb(0 0 0 / 60%);
            }

            .laenge1 {
                background-color: green;
                color: white;
                border: 1px solid black;
                box-shadow: 3px 3px 3px rgb(0 0 0 / 60%);
            }

            .laenge2 {
                background-color: yellow;
                border: 1px solid black;
                box-shadow: 3px 3px 3px rgb(0 0 0 / 60%);
            }

            .laenge3 {
                background-color: orange;
                color: black;
                border: 1px solid black;
                box-shadow: 3px 3px 3px rgb(0 0 0 / 60%);
            }

            .laenge4 {
                background-color: red;
                color: white;
                border: 1px solid black;
                box-shadow: 3px 3px 3px rgb(0 0 0 / 60%);
            }

            #spalte1 {
                width: 325px;
                background-color: #B0E2FF;
            }

            #spalte2 {
                width: 55px;
                background-color: #B0E2FF;
            }

            #spalte3 {
                background-color: #B0E2FF;
            }

            span {
                display: inline-block;
            }

            .gesamtklicks {
                border: 1px solid black;
                padding: 3px 0;
                margin: 0 2px;
                margin-bottom: 10px;
                margin-right: 610px;
                background-color: #B0E2FF;
                width: 99.5%;
                text-align: center;
                white-space: pre;
                box-shadow: 3px 3px 3px rgb(0 0 0 / 60%);
            }

            table tr:hover td {
                background-color: white;
            }
        </style>

    </head>

    <body>
        <?php
        
    /* Zählt alle Dateien incl. allen Dateien in Unterordnern
    * php-einfach.de/experte/codeschnipsel/14082-alle-dateien-und-ordner-in-einem-verzeichnissen-zaehlen
    * $dir => Hier wird der Grundpfad angegeben
    *
    *********************************************************/
        
    function filecounter($dir)
        {
            
    $dirs  0;    // Variable für die Verzeichnisse
            
    $files 0// Variable für die Dateien
            
    $path scandir($dir);    // Gibt den Inhalt des ganzen Verzeichnisses in einem Array wieder
            
    foreach ($path as $file) { // Wiederhole den Vorgang solange bis jedes Element des Arrays "$path" überprüft wurde
                
    if ($file != '.' && $file != '..') { // Ignoriert die Elemente "." und ".."
                    
    if (is_dir($dir '/' $file)) {    // Prüft ob es sich um ein Verzeichnis handelt
                        
    $dirs++; // Inkrementiert $dirs um 1
                        
    $back     filecounter($dir '/' $file); // Zählt alle Dateien und Verzeichnisse in diesem Verzeichnis. Wiederholt sich solange wie es Unterverzeichnisse gibt.
                        
    $dirs  += $back[0];    // Inkrementiert $dirs mit der Anzahl der Ausgewerteten Verzeichnisse durch "count_subdirectory"
                        
    $files += $back[1]; // Inkrementiert $files mit der Anzahl der Ausgewerteten Dateien durch "count_subdirectory"
                    
    } elseif (is_file($dir '/' $file)) { // Prüft ob es sich um eine Datei handelt
                        
    $files++; // Inkrementiert $files um 1
                    
    }
                }
            }
            
    $rtn = array($dirs$files); // Erstelle ein Array aus den beiden Werten
            
    return $rtn// Gebe das Array zurück
        
    }
        
    // auslesen der Dateien und gesamt Klicks zählen
        
    $verzeichnis 'statistics';
        
    $anzahl filecounter($verzeichnis); // aus Funktion - code-schnipsel - funktion-anzahl-bilder.php
        
    $dateien $anzahl[1];
        
    $gesamt 0;
        
    $max 0;
        
    // -- Anzahl der Dateien im Ordner --
        
    $pt dirname(__FILE__) . "/statistics";
        
    $fn scandir($pt);
        foreach (
    $fn as $k => $val) {
            if (
    $val != "." && $val != "..") {
                
    $teilung explode("."$val);
                
    $inhalt file_get_contents("$pt//$val"); // so kannst du dateien öfnen
                
    $gesamt $gesamt $inhalt;
                if (
    $max $inhalt) {
                    
    $max $inhalt// gesamt Klicks aus allen Dateien
                
    }
            }
        }
        
    //-- Original --
        
    $pt dirname(__FILE__) . "/statistics";
        
    $fn scandir($pt);
        
    $x 1;
        echo 
    '<div class="inhalt">';
        echo 
    '<p class="ueberschrift">Butten Klick Statistik</p>';
        echo 
    '<table>';
        echo 
    '<tr><th id="spalte1">Datei Name</th><th id="spalte2">Klicks</th><th id="spalte3">Anzeige</th></tr>';
        foreach (
    $fn as $k => $val) {
            if (
    $val != "." && $val != "..") {
                echo 
    '<tr><td class="tdlinks">' sprintf('%02d'$x) . ' - ';
                
    $x $x 1;
                
    $teilung explode("."$val);
                
    /* echo $val; */ // Dateiliste
                
    echo $teilung[0];
                echo 
    '</td>';
                
    $inhalt file_get_contents("$pt//$val"); // so kannst du dateien öfnen
                
    echo '<td>';
                echo 
    $inhalt;     // datei inhalte werden ausgegeben ..
                
    echo '</td>';
                echo 
    '<td>';
                
    $laenge = (800 $max) * $inhalt// laenge 800 = maximal Anzeigenlänge abgängig von der Tabellenbreite
                
    if ($laenge >= 600) {
                    
    $id 1// grün
                
    }
                if (
    $laenge >= 400 and $laenge 600) {
                    
    $id 2// gelb
                
    }
                if (
    $laenge >= 200 and $laenge 400) {
                    
    $id 3// orange
                
    }
                if (
    $laenge 200) {
                    
    $id 4// rot
                
    }
                echo 
    '<hr class="laenge' $id '" style="width:' $laenge 'px;text-align:left;">';
                echo 
    '</td></tr>';
            }
        }
        
    $a round($max 100 251);
        
    $aa $a 0.1;
        
    $b round($max 100 25 21);
        
    $bb $b 0.1;
        
    $c round($max 100 25 31);
        
    $cc $c 0.1;
        echo 
    '</table>
        <p><span class="gesamtklicks">Gesamt Klicks: ' 
    $gesamt '    /    Beste Seite Klicks: ' $max '    /    Gesamt Seiten: ' $anzahl[1] . '</span><br>
        <span class="laenge4" style="width:24%">0% - 25%  /  0 - ' 
    $a ' Klick</span>
        <span class="laenge3" style="width:25%">25% - 50%  /  ' 
    $aa ' - ' $b ' Klick</span>
        <span class="laenge2" style="width:25%">51% - 75%  /  ' 
    $bb ' - ' $c ' Klick</span>
        <span class="laenge1" style="width:24%">76% - 100%  /  ' 
    $cc ' - ' $max ' Klick</span></p>
        </div>'
    ;

        
    ?>
    </body>

    </html>
    sigpic

    Das Aktuelle Wetter in Müden/Örtze - Lüneburger Heide - Wetter Aufzeichnung seit 2006 mit Archiv und Web Cam Tages Bilder

  • #2
    Hallo

    Ich habe mal die Anzeige erweitert

    mfg
    Michael
    sigpic

    Das Aktuelle Wetter in Müden/Örtze - Lüneburger Heide - Wetter Aufzeichnung seit 2006 mit Archiv und Web Cam Tages Bilder

    Kommentar


    • #3
      Ich denke, wenn ich mir den Code hier in deinem ersten Posting ansehe, verstehe ich, was Du vor hast.
      preg_replace kann dein Problem lösen, siehe hier:
      https://www.php.net/manual/de/function.preg-replace.php
      In diesem Fall brauchst Du gar keine komplizierte Regex sondern nur das ".*":
      PHP-Code:
      $finden = array(
            
      '/monat\.php.*/'
      ); 
      Die anderen Begriffe ebenfalls in Schrägstriche einschließen.
      Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
      (Andre Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)

      Kommentar


      • #4
        Hallo

        Danke für die Info
        Das mit diesen vielen / \ * muss ich erst ein mal verstehen.
        In den Beispielen sieht das sehr kompliziert aus.

        mfg
        Michael
        sigpic

        Das Aktuelle Wetter in Müden/Örtze - Lüneburger Heide - Wetter Aufzeichnung seit 2006 mit Archiv und Web Cam Tages Bilder

        Kommentar


        • #5
          Wenn Du es verstehen möchtest, kannst Du es hier ausprobieren:
          https://regex101.com
          und bekommst Erklärungen, was die einzelnen Zeichenkombinationen bedeuten.
          Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
          (Andre Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)

          Kommentar


          • #6
            Hallo

            Ok, Danke
            Schaue ich mir mal an

            mfg
            Michael
            sigpic

            Das Aktuelle Wetter in Müden/Örtze - Lüneburger Heide - Wetter Aufzeichnung seit 2006 mit Archiv und Web Cam Tages Bilder

            Kommentar


            • #7
              Warum muss das aktuelle Datum überhaupt als Parameter übergeben werden?

              Kommentar


              • #8
                Zitat von bdt600 Beitrag anzeigen
                Warum muss das aktuelle Datum überhaupt als Parameter übergeben werden?
                Hallo

                Weil damit die Anzeige und Navigation der Web Cam Bilder erzeugt wird.
                Steht da 2020-01-01 wird auch genau der Monat angezeigt.

                Was ich bis jetzt aber fest gestellt habe ist, das Besucher die Seite aus dem Cache oder einem "Falschen" Lesezeichen aufrufen.
                Dadurch gibt es mehrere Anzeigen für ein und die selbe Seite.

                anzeige.jpg

                mfg
                Michael
                Zuletzt geändert von eloms; 05.08.2022, 14:03.
                sigpic

                Das Aktuelle Wetter in Müden/Örtze - Lüneburger Heide - Wetter Aufzeichnung seit 2006 mit Archiv und Web Cam Tages Bilder

                Kommentar


                • #9
                  Hallo

                  Ich wollte mal ein Fazit des Zählers abgeben.
                  Es Funktioniert gut und man kann die Klicks der einzelnen Seiten gut auswerten.
                  Für das was ich möcht ist es völlig ausreichend.

                  Aber
                  1. Man sollte sich vorher genau Überlegen welche Seiten überwacht werden sollen, denn die oben genannten klicks Post 8, entsehen dadurch, das ich Seiten geändert habe und nicht mehr existieren.
                  Da aber im Browser oder als Lesezeichen der Link beim Besucher noch aktiv ist, werden natürlich auch diese klicks gespeichert.
                  Eine nachträgliche Änderung bringt auf jeden Fall ein durcheinander in der Auswertung.

                  2. Wenn der Klickzähler außer Betrieb genommen werden soll, da man ihn villeicht nicht mehr benötigt, kann man die Auswertunsseite auf die umgeleitet wird nicht einfach löschen.
                  Dann läuft der Besucher ins leere. Da muss eine Infoseite geschaffen werden um den Besucher drüber zu Informieren, das sich die Seite geändert hat. ( 404 )

                  2. Es gibt klick unterschiede zwischen dem Monat und den Gesammt Klicks der einzelnen Seiten.
                  Entweder habe ich da noch ein Problem mit der Auswertung oder vielleicht haben gerade 2 Besucher gleichzeitig den gleichen Butten betätigt.

                  Auf dem Bild habe ich schon mehr mals etwas gelöscht, ist also nicht aktuell.
                  Und die Startseite wird eigentlich nicht mehr gezählt, wird aber immer noch angezeigt.
                  Mal sehen wie ich da weiter mache.

                  mfg
                  Michael

                  anzeige2.jpg
                  sigpic

                  Das Aktuelle Wetter in Müden/Örtze - Lüneburger Heide - Wetter Aufzeichnung seit 2006 mit Archiv und Web Cam Tages Bilder

                  Kommentar

                  homepage-forum.de - Hilfe für Webmaster! Statistiken

                  Einklappen

                  Themen: 57.111   Beiträge: 432.331   Mitglieder: 29.315   Aktive Mitglieder: 42
                  Willkommen an unser neuestes Mitglied, Olaf Berg Nielsen.

                  Online-Benutzer

                  Einklappen

                  200 Benutzer sind jetzt online. Registrierte Benutzer: 0, Gäste: 200.

                  Mit 3.502 Benutzern waren am 23.01.2020 um 17:20 die meisten Benutzer gleichzeitig online.

                  Die neuesten Themen

                  Einklappen

                  Die neuesten Beiträge

                  Einklappen

                  Lädt...
                  X