login  Naam:   Wachtwoord: 
Registreer je!
 Forum

'Gat' in PHP

Offline Frederic - 31/05/2005 22:01 (laatste wijziging 31/05/2005 22:04)
Avatar van FredericPHP ver gevorderde Ik ben iets aan het maken en stuit op volgend probleem:

Structuur:

/index.php (hier wordt /include/bestand.php geinclude)
/Tabbladen.css
/include/bestand.php

Ik include een bestand op index.php (waar bovenaan de pagina ob_start() staat), en dat ziet er als volgt uit:

  1. <?php
  2. if(isset($_GET['download'])){
  3. if(!strstr($_GET['download'], '..')){
  4. $bestand = $_GET['download'];
  5. if(file_exists("Tabbladen.css")){
  6. @readfile("Tabbladen.css");
  7. /*header("Content-Description: File Transfer");
  8.   header("Content-Type: application/force-download");
  9.   header("Content-Disposition: attachment; filename=Tabbladen.css");
  10.   header("Content-Length: ".filesize("Tabbladen.css"));*/
  11.  
  12. }else{
  13. echo "error1";
  14. }
  15. }else{
  16. echo "error2";
  17. }
  18. }?>

Nu, dit is nog maar zeer primitief, maar dit test het wel of het werkt. Nu, als ik dus ga naar index.php?download=a , zal het bestand tabbladen.css aangeroepen worden.
Het bestand kan gevonden worden, want er komt geen error, en de inhoud van readfile (dus in dit geval de css file zelf) wordt ge-echo't op het scherm. Tot hier is alles goed, dus hetgene klopt
-Path naar bestand en bestandsnaam (want er is geen error)
-Het bestand zelf (want de inhoud wordt ge-echo't via readfile)

Nu, haal ik de comment streepjes voor de 4 header regels weg, dan zal het bestand gedownload worden. Spijtig genoeg, als ik dat bestand open, dan zal er in dat bestand oftewel een foutmelding komen dat het corrupt is, oftewel gewoon de inhoud van mijn pagina zelf (index.php dus, de sourcecode ervan (HTML))... Snapt iemand dit/kan iemand me een oplossing bieden?

5 antwoorden

Gesponsorde links
Offline ikkedikke - 31/05/2005 22:31
Avatar van ikkedikke PHP expert ik dnek inderdaad dat dat een foutje is met dat ob_start();

je kan nog proberen dat @readfile() onder die headers te zetten ...
nou echo'tie eerst je stylesheet en dan pas de headers...
Offline Frederic - 31/05/2005 22:49
Avatar van Frederic PHP ver gevorderde Ja, dat had ik eerst, maar ook al zet ik het eronder, dat doet niets af!
Offline Fenrir - 01/06/2005 16:44 (laatste wijziging 01/06/2005 16:44)
Avatar van Fenrir PHP expert Echo je ook nog html?
Dan moet je dat verwijderen.
  1. <?php
  2. if(isset($_GET['download'])){
  3. if(!strstr($_GET['download'], '..')){
  4. $bestand = $_GET['download'];
  5. if(file_exists("Tabbladen.css")){
  6. header("Content-Description: File Transfer");
  7. header("Content-Type: application/force-download");
  8. header("Content-Disposition: attachment; filename=Tabbladen.css");
  9. header("Content-Length: ".filesize("Tabbladen.css"));
  10.  
  11. @readfile("Tabbladen.css");
  12. }else{
  13. echo "error1";
  14. }
  15. }else{
  16. echo "error2";
  17. }
  18. }
  19. ?>
Offline Frederic - 01/06/2005 18:44
Avatar van Frederic PHP ver gevorderde neen, ik echo er geen html voor!
Offline Fenrir - 01/06/2005 18:49 (laatste wijziging 01/06/2005 18:49)
Avatar van Fenrir PHP expert Maar werkt dat? /\
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s