Ich glaube er will das komplett transparent haben. Ich habe das bei mir so gemacht (geht nur für Apache-Webserver):
Nehmen wir an der Ordner mit den ganzen Dateien heisst
files. Diesen Ordner benennst du um in sagen wir mal
realfiles. Dann erstellst du einen neuen Ordner mit dem Namen files und einer einzigen Datei .htaccess mit folgendem Inhalt:
Code:
RewriteEngine on
RewriteBase /files/
RewriteRule ^(.+)$ /download.php\?file=$1
Danach erstellst du nur noch die
download.php im Stammordner, die den Counter erhöht und die richtige Datei aus
realfiles dann an den Browser schickt. Bei mir sieht die download.php so aus:
Code:
<?php
require "dblogin.php"; // provides mysql_login() which calls mysql_connect with the proper arguments
if ((IsSet($_GET["file"])) && (file_exists("realfiles/" . $_GET['file'])))
{
$filename = "realfiles/" . $_GET["file"];
$dbh = mysql_login();
mysql_select_db("danny");
$stats_query = "SELECT count FROM downloads WHERE file='" . $_GET['file'] . "'";
$stats_result = mysql_query($stats_query);
if (mysql_num_rows($stats_result) > 0)
{
$stats_array = mysql_fetch_assoc($stats_result);
if ($stats_array['count'] !== null)
{
$stats_query = "UPDATE downloads SET count = count + 1 WHERE file='" . $_GET['file'] . "'";
mysql_query($stats_query);
}
}
mysql_close($dbh);
header("Content-type: application/force-download");
header("Content-length:" . filesize($filename));
readfile($filename);
} else {
$host = $_SERVER["SERVER_NAME"];
header("Location: http://$host/index.php");
}
?>