Supportnet / Forum / Skripte(PHP,ASP,Perl...)
pdf-Dateien per php-Skript öffnen+anzeigen
Frage
Hallo zusammen!
Vielleicht kann mir ja hier jemand aus Erahrung einen Tipp geben:
ich habe in einem Zugriffsgeschützen Verzeichnis pdf-Dateien liegen, die mit hilfe eines php-Skriptes, das auf diesen ordner zugreifen darf, anzeigen soll. Ich habe ein Link gesetzt, der den Dateinamen an das Skript übergibt. Dort in dem Skript stehen dann folgende Header-Angaben:
'Cache-Control: must-revalidate, post-check=0, pre-check=0'
'Pragma: no-cache'
'Content-Type: application/pdf'
'Content-Disposition: attachment; filename=\"name.pdf\"'
und der aufruf erfolgt mit readfile()
Ich kann die pdf-Dateien in meinem Firefox 2, IE6 und IE7 sowie schon Firefeox 3 Beta 5 öffnen..ohne Fehler..
Ich bekomm aber meldungen, dass es einige nicht können (benutzen auch IE6 oder IE7)...fehlen etl. noch header-Angaben? Wenn ja welche? Oder kennt jemand eine komplett andere möglichkeit?
Antwort 1 von son_quatsch
$filename = $_REQUEST['filename'];
/* bitte anschließend noch $filename sinnvoll filtern und erweitertn, nicht damit ein böser Aufrufer als filename "somefile.php" übergeben kann und somit die Skripte (samt Passwörter?) im Klartext auslesen kann */
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
/* Falls du ein Download-Fenster erzwingen willst, nutze folgende:
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download"); */
header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=". $filename. ";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". filesize($filename) );
readfile($filename);
Aber ohne genaue Beschreibung der Nutzer ist es nur schwer abschätzbar. Möglicherweise haben die bei sich sonderbare Einstellungen, die das Adobe-Plugin im MSIE nicht richtig laden lassen. Oder beschränkte Zugriffsrechte...Antwort 2 von son_quatsch
Huch, gerade noch etwas mehr gefunden (die ganzen Kommentare in der PHP-Doku helfen viel: http://de3.php.net/manual/de/function.header.php) - der Fehler könnte auch auf Content-Disposition: attachment beruhen. Versuch hier statt attachment mal inline zu benutzen und teste das zunächst alles bei dir, danach mit den Problemkunden.
Antwort 3 von michi200
Hi!
Vielen Dank! Ich werds mal so austesten.
Vielen Dank! Ich werds mal so austesten.
Antwort 4 von michi200
Ja, danke. Also bei mir läuft das in allen Browsern. Jetzt mal gucken, ob das auf anderen Rechnern und in anderen Browsern auch geöffnet werden kann.
Antwort 5 von son_quatsch
Zitat:
Ja, danke. Also bei mir läuft das in allen Browsern
Das freut mich :-) Willst du mir (und allen anderen) auch sagen, was du nun alles geändert hast?Ja, danke. Also bei mir läuft das in allen Browsern
Antwort 6 von michi200
Hey!
Jo, ich hab meine im ersten Post genannten header-Angaben genauso angepasst bzw. hinzugefügt, wie du es mir mitgeteilt hast. Damit ging es weiterhin in meinen Browsern (IE7, IE6 und FF2) und beim Kunden auch. Bin aber "attachment" geblieben, statt inline. Bei inline kannes ja manchmal vorkommen, dass der Acrobat Reader einfach nicht mehr arbeiten will.
Grüße, Micha
Jo, ich hab meine im ersten Post genannten header-Angaben genauso angepasst bzw. hinzugefügt, wie du es mir mitgeteilt hast. Damit ging es weiterhin in meinen Browsern (IE7, IE6 und FF2) und beim Kunden auch. Bin aber "attachment" geblieben, statt inline. Bei inline kannes ja manchmal vorkommen, dass der Acrobat Reader einfach nicht mehr arbeiten will.
Grüße, Micha