AlexBausW: Datei Download "ausserhalb" des Apache ?!

Beitrag lesen

Hallo,

while ($dateiname=verzeichniseintrag_lesen()) {
    echo "<li><a href="".htmlentities($dateiname)."">".htmlentities($dateiname)."</a></li>\n";
  };

Das wird dann beim Klick auf die Links Zugriffsyfehler geben. Was Du brauchst ist ein Script, dass die angeforderte Datei ausliefert. Links müssen also das Script refenzieren und den Namen der angeforderten Datei irgendwie als Get-Varíable übergeben. Den Pfad würde ich dann Scriptseitig dazuaddieren.

Mit readfile($pfad.$dateiname) kannst Du Die Dateien dann ausgeben. [...]

Mökmök! Ich weis ja nicht, wie readfile() mit Pipes ala $dateiname = "datei | rm -r /*"; umgeht, aber ohne absolut wasserdichte Überprüfung der Usereingaben würde ich keine Variablen auf mein System loslassen. :)

Imho sollte folgendes Konzept einigermaßen tauglich sein (Variableninitialisierung und Fehlerbehandlung dazudenken ;-):

$dir = "/path/to/mp3s";
$dh  = opendir($dir);
$filepath = $file = '';
while ($file = readdir($dh)) {
        $filepath = "$dir/$file";
   clearstatchache();
 if (is_file($filepath)) $files[$file] = $filepath;
}
closedir($dh);
.
.
.
if (isset($files[$_REQUEST['file']]) &&
    $filepath = $files[$_REQUEST['file']]) {
 // Hier Dateisachen mit ungefährlichem $filepath machen
}

Das ist imho besser gegen unerwünschte Eingaben, als die Eingabe selbst zu "entschärfen", weil nur gültige Eingaben zum Erfolg führen und ungültige verworfen werden.

Gruß Alex