[PHP] file doesn't begin with '%PDF'

Pagina: 1
Acties:
  • 311 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zit met een apart probleem. Ik krijg de headers niet werkend voor een PDF download waar ik mee bezig ben. In $file zit het absolute pad naar het bestand. Mijn code is als volgt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
$hidden = php::createRandomPassword();

header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header( "Cache-Control: no-store, no-cache, must-revalidate" );

header( "Content-Type: application/pdf" );
header( 'Content-Length: '. filesize( $file ) );
header( 'Content-Disposition: attachment; filename="file_'. $hidden .'.pdf";' );
header( 'Content-Transfer-Encoding: Binary' );

readfile( $file );

Hiermee krijg ik de error file doesn't begin with '%PDF'. Maar het grappige is dat wanneer ik readfile() echo dan is het eerste wat ik zie %PDF... Ik heb op verschillende plekken gezocht, maar tot nu toe geen antwoord gevonden op dit probleem. Ik zag bijvoorbeeld dat het misschien iets met mod_deflate op Apache te maken had, maar in mijn httpd.conf zie ik daar geen regels voor staan... Ik test dit trouwens in Firefox.

Iemand een idee waar het fout gaat?

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Wat staat er in je $file ?

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Een PDF file.

Krijgt ge die error in Firefox? Dan stuurt ge toch waarschijnlijk de verkeerde headers mee :)

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De variable $file bevat het absolute pad naar de file (bijv. /var/www/hosts/site.nl/pdf/test.pdf ) en als ik dan readfile echo dan krijg je zoiets:
%PDF-1.2 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R /PageMode /UseNone /ViewerPreferences << /FitWindow true /PageLayout /SinglePage /NonFullScreenPageMode /UseNone >> >> endobj 2 0 obj << /Type /Pages /Kids [ 8 0 R 36 0 R ] /Count 2 /MediaBox 3 0 R /CropBox 4 0 R >> endobj 3 0 obj [ 0 0 595 841 ] endobj 4 0 obj [ 0 0 595 841 ] endobj 5 0 obj << /Length 2586 /Filter [ /FlateDecode ] >> stream xœ&#141;ZÛrÇ}ÇWL¹ÊUR9ç¾;ªÊ *‰EQHØ~ÑË&#144;+íÞ)þUü‡é¹í.ˆ±eU¹&#143;Ü;}¦§»§{`¼ÄaóO6åââZ?æ}ó÷+´i§hu» 蟋?Ђp&aiÊQ¹ +êQáã<5Àèyùañû¢2[{èvµ =½¶Ôíâ¿(òÁD§<4÷ÚV¥<`tB}Ð(§ä¼z즸ÕR>±à…&#129;Ä2æ*–1ÅÄ£b@’a@^Ñ&#129;k7‹«õ‚X™ ¯™0&#129;Öpd]·#Qž õnñfuùéãÕÍåúã&#127;>£Õ‡›õÇ¿}\]®?¼Eëo‹ëq)¦ ažO¥GÅ€6È+:ð*¯ ©F^€åxé¦Ëwù&ë4ªúòN7è=¢Xb"å9ç{Îr‚Ð�Ŝ�ˆÀ!Äx•š×¤8&#141;Pû’ÝkЩwˆ3aŒ»5Hš •€§Á\’ÚdÉË{ŒÐut)q‰d…”r«›â K&º›£'X&°Cp*¨K"¡^"«öèñ` !ÔÀ©$�Ââ¼ê$¯©0&#157;:Ibë¤k&#157;mŸt~ÿСN·&#157;nŽ\•HÅ>iJGÚx Nm¯çÃi".ÒãЙ8¢\H߀á%çXxÍ8Ô=ï5z&#127;ìÊÒ&#129;ìcdá€7ìÔæ°ðšq·Ÿ#&›/§„&fÙÔ-ì¯ç°†Åñ9®3c ”%)X8à !r–…׌³XeÅ]÷±#™Ø¶W™xä­ðz•Ŝ׌S¡}ë‹g¨qX’™V�Ì0¶ŽI TªhÈ^/ÏI^S'\8qÉÛ7yu&#143;6Y‘ß5Y—×Êlïݶ}£QÞ¢}ß¡¾ÚBaÎM½E¥ÎZ÷ù>o;øòé!ß<˜&»z&#141;”R&#144;êÇœŜ:ÛÂòOy÷05çjL{\ˆ…&#144;ˆ§öºb®>+^–\™s´:N~ý:°Ŝ Á±B4âÖ…ä4X·²·.8‘Áº—Ï[9’FM¶ÑÙ]^äÝsœEÂlóc-[Ù³HˆH/Ÿg‘P°}Ìâ×j×u–W'I$t8+ÂF°ÓqòBÆâF·}&#143;&#129;…ü®g+NN!Úäs`1,Ž |¨ó¦®J]uY&#129;6uµÍM꜈MBµáí&#157;E�X%Á+œw!DÄBd5ÉâRwõö!J1³„÷ ð€¨)!5—,‘Æ®Ýäà

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Aanname. Misschien staat er wel whitespace voor %PDF.

{signature}


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

Bijdehand ;)
Maar het grappige is dat wanneer ik readfile() echo dan is het eerste wat ik zie %PDF...
Weet je zeker dat dat alles is? Staat er toevallig nog whitespace voor? Of hex characters welke in je echo niet getoond worden?
Kortom, bekijk de PDF eens met een Hex Editor.

edit:
bloody hell, Voutloos is eerder

[ Voor 5% gewijzigd door TeeDee op 01-11-2007 14:31 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Snake schreef op donderdag 01 november 2007 @ 14:26:
[...]

Een PDF file.

Krijgt ge die error in Firefox? Dan stuurt ge toch waarschijnlijk de verkeerde headers mee :)
Ja dat vermoed ik zelf ook, maar ik kan dan op een of andere manier niet achterhalen wat de juiste headers zijn, omdat overal staat aangegeven dat het zo moet...
Voutloos schreef op donderdag 01 november 2007 @ 14:30:
[...]
Aanname. Misschien staat er wel whitespace voor %PDF.
Nou ik heb gekeken met een Hex Editor, maar ik zie geen spaties of andere gekke tekens voor %PDF- staan...

[ Voor 26% gewijzigd door Verwijderd op 01-11-2007 14:34 ]


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
heb je misschien voor <?php nog iets staan, of genereert php::createRandomPassword(); output?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op donderdag 01 november 2007 @ 14:31:
Nou ik heb gekeken met een Hex Editor, maar ik zie geen spaties of andere gekke tekens voor %PDF- staan...
Je moet gewoon de response bekijken. ;) Na de laatste header \r\n\r\n en dan meteen %PDF is hip. :)

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voutloos schreef op donderdag 01 november 2007 @ 14:46:
[...]
Je moet gewoon de response bekijken. ;) Na de laatste header \r\n\r\n en dan meteen %PDF is hip. :)
He hoe bedoel je? Dat moet ik doen, of dat gebeurt vaak? In ieder geval, ik heb ook nog even de headers bekeken die worden gegenereerd:
HTTP/1.x 200 OK
Date: Thu, 01 Nov 2007 14:01:32 GMT
Server: Apache/2.0.52 (CentOS)
X-Powered-By: PHP/4.3.9
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 44323
content-disposition: attachment; filename="file_gJTw9HG6M.pdf";
Content-Transfer-Encoding: Binary
Last-Modified: Thu, 01 Nov 2007 14:01:32 GMT
Connection: close
Content-Type: application/pdf
Misschien zit hier nog een fout? Ik las trouwens ook nog ergens dat het misschien iets met sessions te maken kan hebben... Maar ik kan dit niet echt beoordelen.

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op donderdag 01 november 2007 @ 14:57:
[...]

He hoe bedoel je? Dat moet ik doen, of dat gebeurt vaak? In ieder geval, ik heb ook nog even de headers bekeken die worden gegenereerd:

[...]

Misschien zit hier nog een fout? Ik las trouwens ook nog ergens dat het misschien iets met sessions te maken kan hebben... Maar ik kan dit niet echt beoordelen.
Haal die quotes eens weg om de file name?
Volgens mij zijn de headers case-sensitive dus content-disposition: is incorrect

[ Voor 8% gewijzigd door LuCarD op 01-11-2007 15:07 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Waarschijnlijk zit je code in een functie van de php class van je Joomla component. Vervelende hiervan is dat je Joomla omgeving al output gemaakt heeft voordat hij bij deze functie terecht komt.

Probeer je code eens uit in een losse nieuwe php pagina :Y

Always shoot for the moon. Even if you miss you will land among the stars...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
LuCarD schreef op donderdag 01 november 2007 @ 15:03:
Haal die quotes eens weg om de file name?
Volgens mij zijn de headers case-sensitive dus content-disposition: is incorrect
Ik probeer dat, maar geen verandering, zijn die andere headers dan ook fout ?

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

wat gebeurt er als je de code die je daar in je topicstart hebt in een compleet aparte file neerzet zonder dependencies naar andere sources?

Volgens mij zijn de headers namelijk gewoon goed en mag dit helemaal niet fout gaan. De fout moet dus liggen in een van je includes óf je voorbeeld komt niet overeen met je werkelijke code :)

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja, in een aparte file werkt het inderdaad wel, maar ik vind het nog gek, dan ga ik eens even kijken hoe dat zit met Joomla en header output.
Pagina: 1