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
Hier noch die Anzeige
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!"; }
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 * 25, 1);
$aa = $a + 0.1;
$b = round($max / 100 * 25 * 2, 1);
$bb = $b + 0.1;
$c = round($max / 100 * 25 * 3, 1);
$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>
Kommentar