[PhP] Forcer le download.
Résolu
Zep3k!GnO
Messages postés
2025
Date d'inscription
Statut
Membre
Dernière intervention
-
postgresophil -
postgresophil -
Bonjour à tous.
Je voulais savoir comment on fait en PhP pour forcer l'utilisateur à télécharger un document (mon cas un PDF).
Que lorsque l'on clic sur le lien, on ait l'invite de télécharegement qui s'affiche.
Je sais que c'est avec des hearders mais je ne me souviens plus bien...
Merci à vous !
Je voulais savoir comment on fait en PhP pour forcer l'utilisateur à télécharger un document (mon cas un PDF).
Que lorsque l'on clic sur le lien, on ait l'invite de télécharegement qui s'affiche.
Je sais que c'est avec des hearders mais je ne me souviens plus bien...
Merci à vous !
A voir également:
- Force download php
- Demarrage forcé pc - Guide
- Microsoft store download - Guide
- Télécharger music mp3 gratuit download pc - Télécharger - Conversion & Extraction
- Canva download - Télécharger - Divers Photo & Graphisme
- Word 2013 free download - Télécharger - Traitement de texte
23 réponses
Le script mentionné ci-dessus est TRÈS INSÉCURE
Si par exemple on se trouve sur un serveur linux, il suffit de lui passer, par exemple,la valeur "../../../../../../etc/passwd" pour downloader le fichier /etc/passwd... On peut virtuellement accéder à n'importe lequel fichier du serveur à l'aide de ce script.
Utiliser plutot ce script, qui utilise basename() afin de se limiter aux fichiers du répertoire local, par exemple.
<?php
$file=$_GET['file'];
if (($file != "") && (file_exists("./" . basename($file))))
{
$size = filesize("./" . basename($file));
header("Content-Type: application/force-download; name=\"" . basename($file) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile("./" . basename($file));
exit();
}
?>
Si par exemple on se trouve sur un serveur linux, il suffit de lui passer, par exemple,la valeur "../../../../../../etc/passwd" pour downloader le fichier /etc/passwd... On peut virtuellement accéder à n'importe lequel fichier du serveur à l'aide de ce script.
Utiliser plutot ce script, qui utilise basename() afin de se limiter aux fichiers du répertoire local, par exemple.
<?php
$file=$_GET['file'];
if (($file != "") && (file_exists("./" . basename($file))))
{
$size = filesize("./" . basename($file));
header("Content-Type: application/force-download; name=\"" . basename($file) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile("./" . basename($file));
exit();
}
?>