Ik heb tot redelijk laat in de nacht een probleem geprobeerd te analyseren dat ik maar niet kan vinden.
Ik heb een pagina, daarin kan ik via een header een bestand downloaden, een PDF in dit geval:
Dit werkt prima en zonder problemen.
Nu heb ik om de pagina een een login script heen gebouwd, werkt ook prima.
Ik heb voor dit login script Output Buffering moeten gebruiken omdat ik namelijk wat headers moet kunnen versturen, tevens maak ik gebruik van sessies om iedere pagina natuurlijk te verifieren, ook de pagina waar bovenstaande code in staat.
Nu werkt de download opzich goed, echter komt mijn bestand altijd corrupt aan, het komt er eigenlijk op neer dat het bestand als HTML verstuurd wordt.
Als ik "inline" in de header gebruik dan zie ik allemaal PDF data, als ik "attachment" gebruik krijg ik een corrupte file binnen met verschillende meldingen, waaronder deze:
"file does not begin with %PDF-"
Ik begin mij dus sterk af te vragen hoe dit kan, ik verdenk een combinatie van Sessies en Output Buffering ?
Ik heb er over gedacht om dit stuk download code in een aparte file te zetten en deze aan te roepen via mijn download link. Dit is alleen een beetje omslachtig, want bovenstaand zou gewoon moeten werken, wat het voorheen ook zonder mijn "Login creaties" wel deed.
Wat zou een dergelijke corruptie kunnen beinvloeden ?
Ik heb een pagina, daarin kan ik via een header een bestand downloaden, een PDF in dit geval:
PHP:
1
2
3
4
5
6
| header('Content-Type: application/pdf'); header("Content-Disposition: attachment; filename=" . $file_name); header("Content-Length: " . (string)(filesize($dir.$file_name))); @readfile($dir.$file_name); exit; break; |
Dit werkt prima en zonder problemen.
Nu heb ik om de pagina een een login script heen gebouwd, werkt ook prima.
Ik heb voor dit login script Output Buffering moeten gebruiken omdat ik namelijk wat headers moet kunnen versturen, tevens maak ik gebruik van sessies om iedere pagina natuurlijk te verifieren, ook de pagina waar bovenstaande code in staat.
Nu werkt de download opzich goed, echter komt mijn bestand altijd corrupt aan, het komt er eigenlijk op neer dat het bestand als HTML verstuurd wordt.
Als ik "inline" in de header gebruik dan zie ik allemaal PDF data, als ik "attachment" gebruik krijg ik een corrupte file binnen met verschillende meldingen, waaronder deze:
"file does not begin with %PDF-"
Ik begin mij dus sterk af te vragen hoe dit kan, ik verdenk een combinatie van Sessies en Output Buffering ?
Ik heb er over gedacht om dit stuk download code in een aparte file te zetten en deze aan te roepen via mijn download link. Dit is alleen een beetje omslachtig, want bovenstaand zou gewoon moeten werken, wat het voorheen ook zonder mijn "Login creaties" wel deed.
Wat zou een dergelijke corruptie kunnen beinvloeden ?