Het PHP script
Voordat we nu verder gaan, ga ik ervan uit dat je al een op sessies gebaseerd inlog systeem hebt op je website en dat er een sessie variable $_SESSION['userID'] wordt aangemaakt bij het inloggen.
Dan gaan we nu het volgende PHP bestand aanmaken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
//Deze regel is belangrijk! Verwijder deze regel niet, anders werkt het downloaden in IE niet goed meer.
session_cache_limiter('private');
error_reporting(E_ALL);
if(!isset($_SESSION)){
session_start();
}
if(!isset($_SESSION['userID'])){
echo "Niet ingelogd!";
exit();
}
if(!isset($_REQUEST['uri']) || empty($_REQUEST['uri'])){
echo "Geen url opgegeven!";
exit();
}
$file = substr($_REQUEST['uri'], strrpos($_REQUEST['uri'],"/")+1);
$file = htmlspecialchars($file);
$folder = realpath('files');
if(!file_exists($folder.'/'.$file)){
echo "Bestand bestaat niet!";
exit();
}
$mime = mime_content_type($folder.'/'.$file);
header("Content-Type: ".$mime);
header("Content-Length: ".filesize($folder.'/'.$file));
header("Content-Disposition: attachement; filename=".$file);
header("Content-Transfer-Encoding: binary");
$fp = fopen($folder.'/'.$file,"r");
fpassthru($fp);
fclose($fp);
?>
//Deze regel is belangrijk! Verwijder deze regel niet, anders werkt het downloaden in IE niet goed meer.
session_cache_limiter('private');
error_reporting(E_ALL);
if(!isset($_SESSION)){
session_start();
}
if(!isset($_SESSION['userID'])){
echo "Niet ingelogd!";
exit();
}
if(!isset($_REQUEST['uri']) || empty($_REQUEST['uri'])){
echo "Geen url opgegeven!";
exit();
}
$file = substr($_REQUEST['uri'], strrpos($_REQUEST['uri'],"/")+1);
$file = htmlspecialchars($file);
$folder = realpath('files');
if(!file_exists($folder.'/'.$file)){
echo "Bestand bestaat niet!";
exit();
}
$mime = mime_content_type($folder.'/'.$file);
header("Content-Type: ".$mime);
header("Content-Length: ".filesize($folder.'/'.$file));
header("Content-Disposition: attachement; filename=".$file);
header("Content-Transfer-Encoding: binary");
$fp = fopen($folder.'/'.$file,"r");
fpassthru($fp);
fclose($fp);
?>
Dit bestand slaan we op als download.php in de ROOT map (in apache dus vaak /htdocs)
« vorige pagina | volgende pagina »