Moin,
kann bitte der Moderator dieses Forums dieses Posting in das PHP-Forum verschieben? Ich habe mich nun für die zweite Lösung, die eymer vorschlug, entschieden und somit ist dies eine reine PHP-Frage.
Dazu müsste ich in einen höheren Tarif wechseln, was aber unnötig Kosten verursacht. Außerdem ist die Statistik des Providers nicht gerade glaubwürdig. Ich soll angeblich in meinem Foodblog an einem Tag im Juli etwa 40.000 Hits gehabt habe. *lol* *unsinnig*
Dazu habe ich zwei Scripts, die ich im Internet gefunden habe, ausprobiert, sie funktionieren aber beide nicht. Vielleicht kann einer der PHP-Kenner mal kurz darüberschauen. Es geht um die PDF-Datei, die ich in meiner Signatur verlinkt habe.
---
Script 1:
Aufzurufen mit:
http://www.kreativ-schmie.de/...e/art_und_design.pdf <?php
// verzeichnis in dem die log-datei liegt, ohne schrägstriche
$dir = "db";
// name der log-datei
$db = "counts.db";
$newlink = 1;
$url = "";
$file = $dir."/".$db;
// hier wird versucht das verzeichnis zur zähler-datei zu erstellen. das könnte man aber auch per hand...
if (!file_exists($dir)){
mkdir($dir) or die ("can't create directory!");
}
// den zu zählenden link aus der GET-übergabe fischen...
$url = $_GET['to'];
// die auszuwertende url darf nicht leer sein und muss aus mindestens vier zeichen bestehen
if ((isset($www.kreativ-schmie.de)) && (!empty($www.kreativ-schmie.de)) && (strlen($www.kreativ-schmie.de)>4)){
// falls die übergebene url nicht mit
http:// oder
https:// oder
ftp:// beginnt wird automatisch ein
http:// davorgesetzt
if (!preg_match("(^(
http://|https://|ftp://))i", $url)){
$url = "
http://".$url; }
// die zähler-datei wird geöffnet und gesperrt - zwei gleichzeitige zugriffe würden die sache nur durcheinanderbringen
$getstats = fopen($file, "r+");
flock($getstats, LOCK_EX);
// die zähler-datei wird eingelesen...
$filecontent = fread($getstats, filesize($file));
$fileline = explode("\n", $filecontent);
$lines = count($fileline)-1;
rewind($getstats);
// in jeder zeile ist der auszuwertende link und die klicksumme vermerkt. das wird hier getrennt und zeilenweise abgearbeitet
for ($n = 0; $n < $lines; $n++){
$entry = explode(" $ ", $fileline[$n]);
// falls der eintrag der aktuellen zeile mit der übergebenen url übereinstimmt wird der entsprechende klick-zähler erhöht...
if ($entry[0] == $www.kreativ-schmie.de){
$entry[1]++;
} else {
// ...andernfalls wird ein script-interner zähler zur ermittlung neuer links verwendet
$newlink++;
}
$writeline = "$entry[0] \$ $entry[1]\n";
fwrite($getstats, $writeline);
}
// falls bei allen einträgen keine übereinstimmung auftrat handelt es sich wohl um einen neuen link - dann wird dieser eben angehängt
if ($newlink > $lines){
$newline = "$www.kreativ-schmie.de \$ 1\n";
fwrite($getstats, $newline);
}
// abschließend geben wir die zähler-datei wieder frei...
flock($getstats, LOCK_UN);
fclose($getstats);
// ... und lotsen den besucher zur gewünschten ressource
header("Location:" .$www.kreativ-schmie.de/art_und_design.pdf);
exit;
// und für den fall dass wirklich alles schiefgeht:
} else {
header("Location:
http://www.kreativ-schmie.de"); }
?>
Gespeichert als exit.php und auf den Server gelegt. Beim Aufruf mit oben genanntem Link erscheint der Inhalt der php-Datei im Browser, mit allen möglichen Hieroglyphen für z.B. Leerzeichen.
---
Script 2
Aufzurufen mit: <a href="download.php?get file=art_und_design.pdf">Imagebroschüre/a>"
<?php
$lines=file("counter.txt"); //File in Array einlesen
$ll = $lines[count($lines)-1]; //last-line
$pos=strpos($ll,'|'); //Position bis zur ersten Pipe
$anzahl=substr($ll,0,$pos)+1;//eins auf den Zähler addieren
$zeit = date("H:i:s");
$datum=date("d.m.Y:");
$ip = $_SERVER["REMOTE_ADDR"];
$eintrag="\n$anzahl|$datum|$zeit|$ip";
$file = fopen("counter.txt", "a");
fwrite($file, $eintrag);
fclose($file);
?>
Als download.php gespeichert und auf den Server gelegt. Es passiert das Gleiche wie bei Script 1, der Inhalt der php-Datei erscheint im Browser.
Hat jemand einen Lösungsvorschlag?
Liebe Grüße
Thobie