- Im Beispiel wird über einen Klick auf einen Download-Button ein Script abgearbeitet, welches aus einem, für den Benutzer von außen nicht sichtbaren, Verzeichnis einen Dateidownload startet.
- Beispiel für eine HTML-Datei, die download.php?f=$filename aufruft:
$filename = "myfile.gif"; echo "<form method="post" action="download.php?f=".$filename.">\n"; echo " <input type="submit" name="btn_download" class="button" value="Download">\n"; echo "</form>\n";
- Beispiel für die download.php, die die Datei aus einem Verzeichnis liefert:
// übergebenen Dateinamen aus der GET-Variablen holen $filename = $_GET["f"]; // Pfad zur Datei zusammenbauen $downloadfile = "../".$filename; // Content type sollte Datei spezifisch übergeben werden // nähere Infos siehe: http://de.selfhtml.org/diverses/mimetypen.htm $content_type = "image/jpeg"; // Dateiname sollte nicht leer sein if (!empty($filename)) { // Dateiname darf keine Slashes enthalten, um zu verhindern, dass // Dateien aus anderen Verzeichnissen vom Server geladen werden können if (!preg_match('=/=', $filename)) { // wenn Datei vorhanden if (file_exists($downloadfile)) { $filesize = filesize($downloadfile); // Header-Infos für den Browser zusammenbauen header("Content-Description: File Transfer"); header("Content-Type: ".$content_type); header("Content-Disposition: attachment; filename='".$filename."'"); header("Content-Length: ".$filesize.""); // Datei liefern readfile($downloadfile); } else { echo "Datei nicht vorhanden: ".$filename."\n"; } } else { echo "Dateiname enthält slashes, das ist aus Sicherheitsgründen nicht erlaubt.\n"; } } else { echo "Der übergebene Dateiname ist leer.\n"; } // hier Script abbrechen und zur ursprünglichen Datei zurückkehren exit();