Hi Leute!
Möglicherweise hat jemand von euch schon mal selbiges Problem gehabt und kann mir nun etwas weiterhelfen.
Ich habe einen Dateiupload in die DB (MySql + PHP) realisiert. Der eingeloggte User bekommt daraufhin eine Liste der enthaltenen Dateien und kann diese downloaden (die Dateien werden in einer Datei, die per Link aufgerufen wird direkt an den Browser ausgegeben):
Datei show_file.php (gekürzte Fassung)
Aufruf mit: show_file.php?id=xx&tablename=tabellenname
if(isset($_GET["id"]) && isset($_GET["tablename"]))
{
$sql = "SELECT dateiname, dateityp, dateigroesse_byte, daten FROM ".$_GET["tablename"]." WHERE id = ".$_GET["id"];
$erg = mysql_query($sql,$verbindung);
$result = mysql_fetch_assoc($erg);
header("Content-type: ".$result["dateityp"]);
header("Content-length: ".$result["dateigroesse_byte"]);
header("Content-Disposition: attachment; filename=".$result["dateiname"]);
//Ausgabe des Dateiinhaltes
echo $result["daten"];
}
Hier erfolgt die direkte Ausgabe an den Browser (funktioniert ganz prima).
Was nun aber leider nicht mehr funktioniert, ist die Sicherheit für eingeloggte Benutzer (PHP-Sessionbasiert auf Cookies). Es kann sich sonst jeder mit dem direkten Link den Download aufrufen.
Sobald ich an den Anfang der Datei show_file.php aber die aktuelle Session mit "session_start()" zu aktivieren versuche, funktioniert die heruntergeladene Datei nicht mehr(nur im IE).
Das Problem dürfte möglicherweise der Header sein, vielleicht hat "session_start()" einen ungewünschten Output an den Browser, der anschliessend die Ausgabe der Datei verwurstelt.
Hat jemand schon mal ähnliches Problem gehabt und wenn ja wie habt ihr das lösen können?
Vielen Dank!
freundliche Grüße,
Daniel Petratsch