Forcer le téléchargement en PHP

Aujourd’hui, je vous propose un autre petit script qui vous permettra de forcer le téléchargement de n’importe quel fichier à l’aide de PHP. Sans plus attendre, voici le script:

<?php
    // On simplifie l'écriture de la variable $_GET['file']
    $file = $_GET['file'];

    // On vérifie que le fichier existe et qu'il est dans le répertoire courant (question de sécurité)
    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();
    }
?>

Il ne vous reste plus qu’à uploader le script sur votre serveur, à placer les fichiers dans le même dossier et à l’utiliser (lien d’exemple ci-dessous):

<a href="/lurlduscript.php?file=fichieradownloader.php">Cliquez moi</a>