[PHP] fpassthru en session_start

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een php pagina om een bestand op te halen:

header("Content-type: application/msword");
header("Content-length:". $size);
header("Content-Disposition: attachment; filename=". $bestand);
header("Content-Description: PHP Generated Data");
fpassthru($fp);

Werkt ook, totdat ik het wil gaan beveiligen ik wil een sql query uitvoeren met wat sessie gegevens.
Maar zodra ik session_start(); aanroep boven de header gaat het al mis, zodra ik het bestand wil openen krijg ik de melding:

This file cannot be found. Waarschijnlijk geeft de functie session_start output waardoor de header informatie van het betreffende bestand niet meer klopt. Echter als ik de fpassthru functie even weghaal krijg ik geen output te zien..

Iemand een idee wat het probleem kan zijn?

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 18-09 21:53

Tux

Misschien moet je eens proberen om output buffering (ob_start(), ob_end_flush()) te gebruiken. Het nadeel is wel dat het geheugen vreet als de bestanden groot zijn.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:28
Kijk eerst eens wat je script precies voor uitvoer geeft (met LiveHTTPHeaders, een packetsniffer of desnoods telnet), dan hebben we tenminste wat informatie waar we wat mee kunnen.

Het is waarschijnlijk dat er ergens een fout wordt gegenereerd maar dat kunnen we aan jouw incomplete code niet zien (daarin staan variabelen die niet geïnitialiseerd zijn). Post dus eerst:
• een volledig (maar minimaal) werkend voorbeeld wat je probleem illustreert;
• de exacte bijbehorende uitvoer die de webserver verstuurt.

Dan kunnen we je vast verder helpen. ;)

Acties:
  • 0 Henk 'm!

  • mosymuis
  • Registratie: Maart 2002
  • Laatst online: 27-04 11:53
Als je de headers tijdelijk // comment krijg je de bewuste output direct op je scherm. Het lijkt er inderdaad op dat er errors ontstaan, die je nu niet ziet.