Tach!
Dein Skript muss folgendes können:
Nicht unbedingt, aber das wäre eine Vorgehensweise, wenn man wiederverwendbaren Code schreiben möchte. Für einen konkreten Einzelfall kann man auch Dinge wie Content-Type ermitteln weglassen, wenn nur eine einzelne Sorte von Dateien ausgeliefert werden soll.
Ein paar Ergänzungen:
- Benutzer authentifizieren (lassen)
- Zugriff erlauben oder verbieten
Macht gegebenenfalls der IIS bereits außerhalb und vor dem PHP-Script-Aufruf (z.B. NTLM-Authentification). Oder der Apache über .htaccess.
- Übergebenen Dateiname/Adresse UMFASSEND prüfen (sind nicht erlaubte Zeichen oder Zeichenfolgen wie "../" oder "..\" drin?), eventuell Abbruch
Statt selbst nach den Punkten Ausschau zu halten, kann man realpath() verwenden. Und anschließend schauen, ob der Anfang vom absolut aufgelösten Dateinamen mit dem Verzeichnis übereinstimmt, dessen Inhalt ausgeliefert werden soll. Beim Selbst-Aufstellen der Regeln für die Punkte muss man sich gewiss sein, dass man nichts vergisst. realpath() macht jedoch den Job schon sehr viel länger.
dedlfix.