Hallo Leute,
auf meiner Website habe ich MP3s zum freien Download.
Der Download selbst läuft über ein php-Skript, welches den Download initiiert und die Downloadzahl in eine Datenbankdatei schreibt, sodass ich diese auf der Seite ausgeben kann.
Funktioniert alles blendend - bis auf eine Sache!
Wenn User den Download-Link anklicken, öffnet sich zwar der Download-Dialog (Speichern unter..etc..) klickt man nun aber auf Download ist der DL-Manager sofort fertig und zeigt an, dass er soeben eine 0-15 KB große Datei heruntergeladen hat (Größe der Dateien variiert, mal 8 KB, mal 2 KB usw.)
Die eigentlichen MP3s haben aber eine Dateigröße zwischen 5-8 Mbyte.
Bitte helft mir, hab schon einiges daran herumprobiert und bin gnadenlos daran verzweifelt. Bin kein guter php-Coder, aber Grundkenntnisse dürfte ich beherrschen - nur scheinen die hier leider nicht zu reichen.
Vielen Dank schonmal im Voraus!
Seite, auf der die Downloads liegen:
Cy-Music - High Quality Producing
Hier mein Downloadskript (bestehend aus "download.php", "functions.php" und "counts.db"):
download.php
functions.php
Die Downloadzahlen werden wie bereits erwähnt in eine Datei namens "counts.db" geschrieben.
Wie die Downloadlinks aufgebaut sind, könnt ihr euch ja im Quelltext auf der obig geposteten Seite anschauen.
Hoffe, ihr könnt mir helfen!
Gruß
Cy-Music
auf meiner Website habe ich MP3s zum freien Download.
Der Download selbst läuft über ein php-Skript, welches den Download initiiert und die Downloadzahl in eine Datenbankdatei schreibt, sodass ich diese auf der Seite ausgeben kann.
Funktioniert alles blendend - bis auf eine Sache!
Wenn User den Download-Link anklicken, öffnet sich zwar der Download-Dialog (Speichern unter..etc..) klickt man nun aber auf Download ist der DL-Manager sofort fertig und zeigt an, dass er soeben eine 0-15 KB große Datei heruntergeladen hat (Größe der Dateien variiert, mal 8 KB, mal 2 KB usw.)
Die eigentlichen MP3s haben aber eine Dateigröße zwischen 5-8 Mbyte.
Bitte helft mir, hab schon einiges daran herumprobiert und bin gnadenlos daran verzweifelt. Bin kein guter php-Coder, aber Grundkenntnisse dürfte ich beherrschen - nur scheinen die hier leider nicht zu reichen.
Vielen Dank schonmal im Voraus!
Seite, auf der die Downloads liegen:
Cy-Music - High Quality Producing
Hier mein Downloadskript (bestehend aus "download.php", "functions.php" und "counts.db"):
download.php
PHP-Code:
<?php
$uri = "http://www.cy-music.de/main/"; //uri zum Ordner, der diese Datei enthält
$downloadCountFile = "./counts.db"; //Pfad zur Datei, die die Downloads zählt
$folder = "downloads/"; //Ordner mit den Download-Dateien in Relation zur uri
include "functions.php";
$file = $_GET['f'];
if(isset($file)) {
$fileDownloadCount = downloadCount($file, $downloadCountFile);
$newFileDownloadCount = $fileDownloadCount + 1;
$oldValue = $file." ".$fileDownloadCount;
$newValue = $file." ".$newFileDownloadCount;
$open = @fopen($downloadCountFile, "r");
$oldData = @fread($open, filesize($downloadCountFile));
$close = @fclose($open);
if(!$oldData) {
$newData = $newValue;
}
elseif($fileDownloadCount == 0) {
$newData = $oldData."\n".$newValue;
}
else {
$newData = str_replace($oldValue, $newValue, $oldData);
}
logEvent($downloadCountFile, $newData, "w");
$open2 = fopen($uri.$folder.$file, "r");
$fileSize = filesize($folder.$file);
$fileContent = fread($open2, $fileSize);
header("Content-Type: audio/mpeg");
header("Content-Length: ".$filesize);
header("Content-Disposition: attachment; filename= ".$file);
echo $fileContent;
fclose($open2);
exit;
}
?>
PHP-Code:
<?php
function downloadCount($fileName, $countFile)
{
$open = @fopen($countFile, "r");
$size = @filesize($countFile);
$downloadCounts = @fread($open, $size);
$close = @fclose($open);
$downloadsArray = explode("\n", $downloadCounts);
foreach($downloadsArray as $array) {
if(ereg($fileName, $array)) {
$fileDownloadArray = explode(" ", $array);
$fileDownloadCount = $fileDownloadArray[1];
}
}
if(!$fileDownloadCount) {
$fileDownloadCount = 0;
}
return $fileDownloadCount;
}
function logEvent($fileName, $message, $writeMode)
{
$open = fopen($fileName, $writeMode);
fwrite($open, $message);
fclose($open);
}
?>
Wie die Downloadlinks aufgebaut sind, könnt ihr euch ja im Quelltext auf der obig geposteten Seite anschauen.
Hoffe, ihr könnt mir helfen!
Gruß
Cy-Music
Kommentar