Ok, jeg biksede lige noget sammen. Det er ikke testet endnu:
Tabellen i MySQL skal oprettes med denne SQL sætning:
CREATE TABLE `file` (
`id` int(10) unsigned NOT NULL auto_increment,
`filename` varchar(255) NOT NULL default '',
`download_max` int(10) unsigned NOT NULL default '0',
`download_count` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `filename` (`filename`(20))
) TYPE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Scriptet download.php:
---------------------------
<?php
// Opret forbindelse til databasen
mysql_connect(...de sædvanlige connect oplysninger...);
mysql_select_db("din-database");
$filename = $_GET["filename"];
// Findes filen i databasen?
$sql = "select * from file where filename = '$filename' ";
$res = mysql_query($sql) or die(mysql_error());
if (!$row = mysql_fetch_array($res)) {
echo "Filen eksisterer ikke.";
exit;
}
// Er filen blevet downloadet for mange gange?
if ($row["download_count"] >= $row["download_max"]) {
echo "Filen har overskredet sit download maximum på " . $row["download_max"] . " gange.";
exit;
}
// Tæl download_count een op
$sql = "update file set download_count = download_count + 1 where filename = '$filename' ";
mysql_query($sql) or die(mysql_error());
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-length:".(string)(filesize($fileString)));
readfile($filename);
?>
Scriptet kaldes således:
http://www.ditsite.com/download.php?filename=foo.txtDer er ikke taget højde for at filerne evt. ligger i en anden mappe. Giv lyd fra dig, hvis du ikke selv kan fikse det.