Download-Zähler

Hallo,

ich möchte die download-Angebote auf meiner Homepage zählen.
Geht das und wenn ja, wie?

Viele Grüße
Günter

Im Prinzip müsstest Du die Downloads nicht als direkte Links zu den Dateien anbieten, sondern über ein PHP-Skript laufen lassen, welche die Downloads für jede Datei zählt.
z.B. wird

[Download](../datei.zip)

zu

[Download](download.php?file=datei.zip)

im Skript download.php wertest Du dann den übergebenen Wert für ‚file‘ aus und setzt den Zähler um eins höher. Idealerweise speicherst Du da in einer MySQL-Datenbank. Es geht auch mit Textdateien, die Lösung ist aber nicht sehr elegant.
Ressourcen hierzu findest Du massig im Web:

http://www.google.com/search?q=PHP+Download+Z%C3%A4h…http://www.google.com/search?q=PHP+Download+Counter&…

Gruß,
Rudy

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

das könnte etwa so aussehen.
Einfach das Script ganz normal aufrufen
mit file=Dateiname(Base64_Encoded)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Subsection zum Download-Modul
/// Erwartet als GET file=name (Base64Encoded)
/// Und bietet die Datei dann zum Download an
///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

require\_once("./../\_scripts/constants.php");
require\_once($lib\_database);
require\_once($lib\_strings);


//Den Download Pfad holen
if (isset($\_GET["file"]))
 $file=Base64\_Decode($\_GET["file"]);
else
 die();

//Ein wenig umbauen
$file=str\_replace("\\","/",$file);
while ($file[0]==".") $file=substr($file,1,strlen($file));
while ($file[0]=="/") $file=substr($file,1,strlen($file));

//Verzeichnis anvisieren
$file=$dir\_files."download/".$file."/".$file;

//Checken, ob die Datei besteht und nur gewünschte Dateien zulassen
if (file\_exists($file.".exe")) $file.=".exe";
if (file\_exists($file.".zip")) $file.=".zip";
if (file\_exists($file.".rar")) $file.=".rar";

//Unseren Header schicken
header("Content-Disposition: attachment; filename=".ExtractFileName($file),TRUE);
header("Content-type : application/octet-stream",TRUE);
header("Content-Length : ".filesize($file),TRUE);

//Und die Datei gleich hinterher
$fp=fopen($file,"rb");
if ($fp!=FALSE)
{
//Nach belieben setzen
set\_time\_limit(0);
while (!feof($fp))
{
$buffer = fread($fp, 8192);
print $buffer;
}
}

//So, nun einfach auf die Datenbank zugreifen und zählen.
//Ich benutze meine eigene Enige, aber es sollte erklären,
//wie sowas mit SQL funktioniert
$file=ExtractFileName($file);
$handle=Bibo\_OpenDatabase($dir\_logfiles."downloads.bibo",READ\_WRITE);
if ($handle!=FALSE)
{
Bibo\_ReadDataBase($handle);

//Abfrage nach unserem Programm machen
$query="SELECT 'Datum','File','Anzahl' WHERE 'File'=='".$file."' UNIQUE=TRUE";
$result=Bibo\_Query($handle,$query);

//Noch kein Eintrag ?
if (!isset($result["Anzahl"]))
{
//Dann einfügen
$query="INSERT 'Datum'='".time()."','File'='".$file."','Anzahl'='1'";
}
else
{
//Ansonsten Zähler erhöhen
$query="UPDATE 'Datum'='".time()."','Anzahl'='".($result["Anzahl"][0]+1)."' WHERE 'File'=='".$file."'";
}
Bibo\_Query($handle,$query);

//Speichern und schließen
Bibo\_WriteDatabase($handle);
Bibo\_CloseDatabase($handle);
}

Das Script benutze ich auch auf meiner Homepage und habe damit
bisher noch keine Probleme gehabt.
Ich hoffe, es hilft weiter

MfG

So9

http://www.Sven-of-Nine.de