Bonjour
je suis confronté à un problème que je n'arrive pas à comprendre.
Je réussis à uploader des fichiers (jpg, png, gif, et pdf) en stockant le nom du fichier renommé dans ma base de données et mes fichiers dans un dossier DOCUMENTS
Je réussis à downloader mes fichiers (jpg, png, gif, pdf...) sur mon ordi mais je n'arrive seulement à lire mes fichiers .pdf....les autres formats de fichiers se téléchargent bien mais je n'arrive pas à les lire alors qu'ils sont dans le même dossier.....
je vous laisse mon code.
Par la même occasion, pouvez-vous me dire si côté sécurité, cela peut convenir....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 function testGetInt($var) { if (!is_numeric($var) && !is_int($var) && empty($var)) { return false; } return true; } function testGetStr($var) { if (!is_string($var) && empty($var)) { return false; } return true; } if (isset($_GET['id']) && isset($_GET['champ'])) { $id = Secur::protect($_GET['id']); $champ = Secur::protect($_GET['champ']); //var_dump($id); ok //var_dump($champ); ok if (testGetInt($id)) { if (testGetStr($champ)) { $sql = "SELECT $champ FROM joueurs WHERE id=:id"; $stmt = $pdo->prepare($sql); $stmt->bindValue(":id", $id, PDO::PARAM_INT ); // $stmt->execute(); $data = $stmt->fetch(); //var_dump($data); //echo $data[$champ]; //die; $filepath = '../DOCUMENTS/' .$data[$champ]; if (file_exists($filepath)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($filepath)); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' .filesize($filepath)); readfile($filepath); exit; } else { header("HTTP/1.1 404 Not Found"); exit; } } else { echo('hoho !! vilain petit internaute !!'); exit; } } else { echo('hoho !! vilain petit internaute !!'); exit; } }
Merci pour vos retours
Partager