Aan de hand van het script van PHP Newbie heb ik het volgende geschreven voor mijn bestandsbeheer:
<?php
$dir = 'bestanden/'; //let op de / aan het eind
if(isset($_GET['download'])){
$sql = "SELECT
id,
naam
FROM
bestanden_new
WHERE
id = '".mysql_real_escape_string($_GET['bestand'])."'
";
$res = mysql_query($sql) or die (mysql_error());
if(mysql_num_rows($res) == 1){
$row = mysql_fetch_array($res);
$sql= "UPDATE
bestanden_new
SET
aantal = aantal +1
WHERE
id = '".mysql_real_escape_string($_GET['bestand'])."'
";
$res = mysql_query($sql) or die (mysql_error());
if(mysql_affected_rows()){
if(file_exists($dir.$row['naam'])) {
header('Content-type: Application/octet-stream'); //zet de header dat het bestand gedownload moet worden
//en dat het dus niet in de browser afgespeeld kan worden
header('Content-Disposition: attachment; filename='.$row['naam']); //geef aan welk bestand gedownload moet worden
readfile($dir.$row['naam']); //en open vervolgens dat bestand
}
else {
echo '<div id="error">Het bestand kon niet gevonden worden</div>';
}
}
}else{
header('location: admin_bestanden.php');
}
}
?>
Alleen elk bestand dat ik nu download is corrupt. Hoe kan dit? Hij weet dat het op de server staat, daarna gaat hij iets raars doen. Wanneer ik een MS Word document wil openen krijg ik gewoon mijn pagina met allemaal binaire data.
Wat gaat er bij mij mis?
219 views