[PHP] Content-Disposition werkt bij 1 site wel, andere niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Hallo,

Om een stukje uit een database te exporteren naar csv gebruik ik het volgende script:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$csv_output = "Naam;Email;Bedrijf;Functie;Categorie;Geactiveerd;Goedgekeurd;\r"; 
$csv_output .= ""; 
$result = mysql_query("select * from newsletter_members"); 
                    
while($row = mysql_fetch_array($result)) { 
$csv_output .= "$row[memName];$row[memEmail];$row[memCompany];$row[memFunction];$row[memCat];$row[memActivated];$row[memValid];\r";
} 
                    
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition:  attachment; filename=" .
date("Y-m-d").".csv");

print $csv_output;
exit;


Bij een site werkt dat allemaal prima naar behoren. Toen ik het bij een andere website op een subdomein ook wou gebruiken werkte de headers niet meer. Dit terwijl de rest van de code etc hetzelfde is.

Ik krijg wel de $csv_output maar die plakt hij gewoon in de browser en plaatst die dus niet in mijn csv bestand.

Kan dit aan een server instelling liggen?

Groeten

Acties:
  • 0 Henk 'm!

Verwijderd

Heb je al ergens output? Misschien staan je php open tags niet op de eerste regel, of dumpt ie ergens al iets oid?

Probeer desnoods ff met output buffering of je het daarmee kan oplossen.

Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Ja, de $csv_ouput print hij dan gewoon in de browser. Krijg dus gewoon de hele sql in mn venster te zien als platte tekst.

Hij opent dus alleen niet het opslaan als venster.

Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 16:45

DexterDee

I doubt, therefore I might be

Plak de precieze headers eens met firebug van de twee servers. Dan kunnen we kijken of daar nog vreemde dingen in staan.

Klik hier om mij een DM te sturen • 3245 WP op ZW


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

twisted2000 schreef op vrijdag 25 september 2009 @ 14:17:
Ja, de $csv_ouput print hij dan gewoon in de browser. Krijg dus gewoon de hele sql in mn venster te zien als platte tekst.

Hij opent dus alleen niet het opslaan als venster.
Bekijk eens de headers die de site verstuurd. Dat kan je makkelijk doen met diverse plugins voor FF

[edit]
Zoals DexterDee al zegt...

[ Voor 4% gewijzigd door LuCarD op 25-09-2009 14:23 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
De foute:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Date    Fri, 25 Sep 2009 12:28:04 GMT
Server  Apache
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Vary    Accept-Encoding,User-Agent
Content-Encoding    gzip
Content-Length  12534
Keep-Alive  timeout=1, max=100
Connection  Keep-Alive
Content-Type    text/html
Verzoekheaders
Host    sub.domein.nl
User-Agent  Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; nl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language nl,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  300
Connection  keep-alive
Referer http://sub.domein.nl/admin/backup.php
Cookie  __utma=65062712



En de goede

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Date    Fri, 25 Sep 2009 12:28:49 GMT
Server  Apache/2
X-Powered-By    PHP/5.2.5
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Vary    Accept-Encoding,User-Agent
Content-Encoding    gzip
Content-Length  1664
Keep-Alive  timeout=1, max=100
Connection  Keep-Alive
Content-Type    text/html
Verzoekheaders
Host    www.domein.nl
User-Agent  Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; nl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language nl,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  300
Connection  keep-alive
Cookie  PHPSESSID=f7117fe046043d53f96a7202a993a4be; countrytabs=0
Cache-Control   max-age=0


Dit is overigens van een ander script, wel zelfde headers die ik gebruik. En hier geldt ook dat dezelfde problemen zich voordoen

[ Voor 3% gewijzigd door twisted2000 op 25-09-2009 14:41 . Reden: aanvulling ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

In die headers komt content-disposition niet eens voor dus ik vermoed dat je naar de headers van het verkeerde request aan het kijken bent. Beide hier getoonde request en response headers zouden allebei gewoon in de browser getoond moeten worden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Klopt. Excuses.

De goede:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Date    Fri, 25 Sep 2009 12:46:39 GMT
Server  Apache/2
X-Powered-By    PHP/5.2.5
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Content-Disposition attachment; filename=2009-09-25.sql
Vary    Accept-Encoding,User-Agent
Content-Encoding    gzip
Content-Length  32792
Keep-Alive  timeout=1, max=100
Connection  Keep-Alive
Content-Type    application/vnd.ms-word


De foute:

code:
1
2
3
4
5
6
7
8
9
10
11
Date    Fri, 25 Sep 2009 12:46:30 GMT
Server  Apache
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Vary    Accept-Encoding,User-Agent
Content-Encoding    gzip
Content-Length  12534
Keep-Alive  timeout=1, max=100
Connection  Keep-Alive
Content-Type    text/html

Acties:
  • 0 Henk 'm!

  • gertjuhh
  • Registratie: April 2004
  • Laatst online: 26-04 09:14
Zet error_reporting en display_errors eens aan op het domein waar het fout gaat.
Lijkt erop dat je headers niet verzonden worden, hier krijg je doorgaans een foutmelding van.
Iets in de zin van "Cannot modify header information - headers already sent by ..."

Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Dat staat er idd:

Warning: Cannot modify header information - headers already sent by (output started at /home//domains/.nl/public_html/easy2/include/php/xtpl.inc.php:296) in /home//domains/.nl/public_html/easy2/admin/backup.php on line 39

Warning: Cannot modify header information - headers already sent by (output started at /home//domains/.nl/public_html/easy2/include/php/xtpl.inc.php:296) in /home//domains/.nl/public_html/easy2/admin/backup.php on line 41

Zie op die regel in xtpl.inc.php alleen niks. En dat bestand wordt ook bij de goede geladen.

Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 16:45

DexterDee

I doubt, therefore I might be

Heb je gecheckt of er geen spaties staan na de ?> tag in het einde van de PHP bestanden die ge-include worden? Als je php5 gebruikt is het trouwens beter om géén end tag te gebruiken, om dit probleem zo veel mogelijk te voorkomen

Klik hier om mij een DM te sturen • 3245 WP op ZW


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

Output buffering is your friend in dit soort gevallen, ook al is het geen briljante oplossing.

[ Voor 27% gewijzigd door MueR op 25-09-2009 15:26 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Yes! Dat is het..stond inderdaad onderaan een lang talenbestand een spatie.
Super bedankt!

Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 16:45

DexterDee

I doubt, therefore I might be

MueR schreef op vrijdag 25 september 2009 @ 15:26:
Output buffering is your friend in dit soort gevallen, ook al is het geen briljante oplossing.
Geen end tag gebruiken is your friend, want dan kan dit probleem niet optreden en hoef je geen output buffering te gebruiken ;)

Klik hier om mij een DM te sturen • 3245 WP op ZW

Pagina: 1