J'utilise un script de téléchargement de force PHP comme suit: -Pourquoi le script PHP Force Download ne fonctionne pas si j'inclure un espace (% 20) dans l'URL?
$file_Name = $_GET['name'];
$file_Url = $_GET['file'];
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file_Name");
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
readfile($file_Url);
exit;
Si l'URL de mon lien est comme: -/image.php?name=Germany.png & file = https% 3A% 2F% 2Fmaps.google.com% 2Fmaps% 2Fapi% 2Fstaticmap% 3Fcenter% 3D Allemagne% 26zoom% 3D15% 26size% 3D240x320% 26maptype% 3Droadmap% 26mobile% 3Dtrue% 26sensor% 3Dfalse, donc cela fonctionne sans aucun problème! Et si j'inclus un espace (% 20) à l'intérieur de l'URL et que j'essaie de le visiter, les navigateurs me montrent "Échec du téléchargement"!
Exemple URL: -/image.php?name=Image.png & file = https% 3A% 2F% 2Fmaps.google.com% 2Fmaps% 2Fapi% 2Fstaticmap% 3Fcenter% 3D River % 20Annan % 26zoom% 3D15% 26size% 3D240x320% 26maptype% 3Droadmap% 26mobile% 3Dtrue% 26sensor% 3Dfalse
Alors, pourquoi cela se produit-il? Qu'est-ce qui ne va pas avec ça?
Bien que la question réelle posée de savoir pourquoi est un mystère pour moi atm, je voudrais souligner que ce script est très dangereux. Si quelqu'un tapait "config.php" dans le fichier et que vous aviez votre fichier de configuration comme ça. Il afficherait toutes vos informations confidentielles. Vous devriez filtrer votre entrée avant de l'utiliser. 'filter_input (INPUT_GET, 'file', FILTER_VALIDATE_URL)' – Grumpy