Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Mh, du brauchst gar nich so viele Headerausgaben, und basename() brauchste auch nicht. Ich hab mal eine zusätzliche Variable reingesetzt um dir auch die Möglichkeit einzuräumen die PDF aus einem anderen Ordner laden zu lassen.
Je nach zu erwaratender Downloadzeit solltest du auch überlegen via ini_set() die "max_execution_time" hochzusetzen. Außerdem wärs denk ich nicht dumm, wenn man error_reporting(0); setzt, um eine eventuelle Fehlerausgabe zu unterdrücken.
Und, was ganz wichtig ist: Du darfst VOR der Header-Ausgabe keinerlei Textausgaben haben, das führt zu Fehlern.
Hm, da würd ich sagen stimmt dann irgendwas mit den Pfaden nicht oder ein anderes Script leitet die Anfrage an die Datei auf deine Website um (z.B. eine .htaccess). Schmeiss mal testweise das Downloadscript und die dazu gehörige PDF in einen anderen Ordner und führ des da dann mal aus.
//Edit
poste mal bitte alle Scripte komplett, die du für dein Vorhaben nutzt, ggf. halt gezippt wenns zu viel ist. Generierst du die PDF irgendwie mit nem andren Script oder so? Oder wie sollte die PDF tatsächlich aussehen?
Hm, da würd ich sagen stimmt dann irgendwas mit den Pfaden nicht oder ein anderes Script leitet die Anfrage an die Datei auf deine Website um (z.B. eine .htaccess). Schmeiss mal testweise das Downloadscript und die dazu gehörige PDF in einen anderen Ordner und führ des da dann mal aus.
//Edit
poste mal bitte alle Scripte komplett, die du für dein Vorhaben nutzt, ggf. halt gezippt wenns zu viel ist. Generierst du die PDF irgendwie mit nem andren Script oder so? Oder wie sollte die PDF tatsächlich aussehen?
Ich hänge fest, denn es liegt wohl am eingesetzten CMS-System. Wenn ich an einer beliebigen Stelle von der Webseite den Download auslöse, wird die Webseite in die PDF-Datei gepackt und deswegen wird das nix. Das ist ja kurios.
Ich muss aber über das CMS gehen, denn die Kunden-Berechtigungen werden über das CMS gesteuert, siehe im Post. Ich bin momentan auch am überlegen, wie ich den Download des PDF's auslösen will. Per Button, per Link, oder wie??? Viele Fragen, wenig Ahnung. Ich sollt n PHP-Coder engagieren.
Gruß,
Cb
Ergänzung ()
TchiboMann schrieb:
Hm, da würd ich sagen stimmt dann irgendwas mit den Pfaden nicht oder ein anderes Script leitet die Anfrage an die Datei auf deine Website um (z.B. eine .htaccess). Schmeiss mal testweise das Downloadscript und die dazu gehörige PDF in einen anderen Ordner und führ des da dann mal aus.
//Edit
poste mal bitte alle Scripte komplett, die du für dein Vorhaben nutzt, ggf. halt gezippt wenns zu viel ist. Generierst du die PDF irgendwie mit nem andren Script oder so? Oder wie sollte die PDF tatsächlich aussehen?
Hab ich schon gemacht. Den obigen Codeschnippsel und die PDF lose auf ne leere Domain gelegt. Da klappt das. Sobald ich es im CMS einsetze, passiert diese Miste. Das sind ganz normale PDF's, kaum 100Kb groß, eher weniger.
So, damit kann der Download des PDF's ausgelöst werden. Wenn jemand den Download-Pfad untersucht, berkommt er den Pfad in das geschützte Verzeichnis
angezeigt. Will er die php auswählen, schlägt das fehl da er auf die Datei ja nicht
zugreifen kann. Gibt es Sicherheitsbedenken bei der Vorgehensweise?
Gruß,
Cb
Ergänzung ()
Und schon das nächste Problem.
Mit dem Browser auf dem Android Handy kann ich die PDF's nicht runterlanden. "Der Download war nicht erfolgreich". Auch der Standardbrowser will das PDF nicht runterladen.
Kann sein, dass die PDF ggf. schreib/zugriffsgeschützt war? Auf Linux gibts ja das Problem mit den CHMOD-Rechten. Wenn die Datei keine richtigen Rechte hat, dann kann auch PHP nicht auf die PDF zugreifen und gibt dann ein Error 403 aus, und in deiner htaccess wird das Script dann auf die index.php umgeleitet. Wär eine Erklärung dafür, denk ich mal...
Aber wenn das so funktioniert es grad funktioniert... Würd ichs ggf. so lassen. Ob das da nu ne Sicherheitslücke ist kann ich nicht beurteilen, kenn ja dein CMS nicht und auch nicht, welchem Zweck die PDF dann dienen soll. Wenns ne Rechnung ist, dann würd ich vll schon sagen, dass es ne Sicherheitslücke sein könnte, wenn in der download.php keinerlei Zugriffsrechte eingetragen sind.
Kann sein, dass die PDF ggf. schreib/zugriffsgeschützt war? Auf Linux gibts ja das Problem mit den CHMOD-Rechten. Wenn die Datei keine richtigen Rechte hat, dann kann auch PHP nicht auf die PDF zugreifen und gibt dann ein Error 403 aus, und in deiner htaccess wird das Script dann auf die index.php umgeleitet. Wär eine Erklärung dafür, denk ich mal...
Aber wenn das so funktioniert es grad funktioniert... Würd ichs ggf. so lassen. Ob das da nu ne Sicherheitslücke ist kann ich nicht beurteilen, kenn ja dein CMS nicht und auch nicht, welchem Zweck die PDF dann dienen soll. Wenns ne Rechnung ist, dann würd ich vll schon sagen, dass es ne Sicherheitslücke sein könnte, wenn in der download.php keinerlei Zugriffsrechte eingetragen sind.
ich muss die genauen Pfade vom Server verwenden, sonst passiert das so wie
geschehen.
Jetzt klappt zumindest der Download mit den gängigen Browsern vom Desktop. Allerdings gehen die Downloads nicht auf allen möglichen Mobil-Browsern, wenn der Download mit PHP angestoßen wird. Es scheint am fopen zu liegen. Gibt es nicht da doch ne Problemlösung für?
Wenn die PDF's direkt per Link aufgerufen werden lassen sie sich korrekt herunterladen. Es scheint am fopen oder irgendwelchen Headern zu liegen
Jor da würd ich sagen liegts an den Headern, wobei des eigentlich theoretisch auch egal ist... Wundert mich, dasses bei den Mobilbrowsern zickt. Wobei ich dann da auch eher die Schuld an den Mobilbrowsern suchen würde...
Du könntest vll versuchen statt des Octet-Stream den anderen, den PDF-Header zu nehmen und das dann mal zu testen.
Ist des denn zwingend notwendig? Weil, PDF und Mobil... Weiß nich.
Jor da würd ich sagen liegts an den Headern, wobei des eigentlich theoretisch auch egal ist... Wundert mich, dasses bei den Mobilbrowsern zickt. Wobei ich dann da auch eher die Schuld an den Mobilbrowsern suchen würde...
Du könntest vll versuchen statt des Octet-Stream den anderen, den PDF-Header zu nehmen und das dann mal zu testen.
Ist des denn zwingend notwendig? Weil, PDF und Mobil... Weiß nich.
eigentlich sollte das mit dem PDF schon auch gehen. Ich stelle Abo-Produkte 2x täglich zum Abruf bereit. Einmal HTML, einmal PDF und immer öfter wird von den Abonnenten auch der mobile, uneingeschränkte Zugang gefordert. Dieser Weg ist mein Ziel.
Der Download funktioniert übrigens nicht mit: Opera Mini, Dolphin Browser, Standardbrowser
Dann musste mal mit den Headern herumspielen und mal im Web suchen, wie ganz genau die Auslieferung von Downloads funktioniert. Bisher hab ich immer nur mit den Headern oben gearbeitet, was halt wunderbar so funktioniert.
Wie des bei den Mobilen Browsern ist weiß ich eben leider nicht, allerdings weiß ich dass Opera Mini auch gerne Probleme mit üblichen Javascripten hat. Von daher würd ich einen Bug da auch nicht ausschließen. Dolphin Browser kenn ich z.B. mal gar nicht^^
Dann musste mal mit den Headern herumspielen und mal im Web suchen, wie ganz genau die Auslieferung von Downloads funktioniert. Bisher hab ich immer nur mit den Headern oben gearbeitet, was halt wunderbar so funktioniert.
Wie des bei den Mobilen Browsern ist weiß ich eben leider nicht, allerdings weiß ich dass Opera Mini auch gerne Probleme mit üblichen Javascripten hat. Von daher würd ich einen Bug da auch nicht ausschließen. Dolphin Browser kenn ich z.B. mal gar nicht^^
Da ist es ab und an gescheiter, eine konkrete Frage gleich ins Netz&Forum zu stellen, denn entweder es gibt tausende Halbwahrheiten oder man stellt nach 10 Stunden fest dass man keinen Schritt weitergekommen ist, wie letzte Nacht. :-(
Also auf zur nächsten Nachtschicht. :-)
edit: Mit Firefox 4.0b1 für Android kann das PDF einwandfrei geladen werden. :-)
Joh, ich weiß wasde meinst^^ Aber manchmal kommste einfach ned drum herum da zig stunden für eine Aufgabe ins Land gehen zu lassen, des kenn ich leider nur zur gut