PHP 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:
<?php
if(isset($_GET['download'])){
if(!strstr($_GET['download'], '..')){
$bestand = $_GET['download'];
if(file_exists("Tabbladen.css")){
@readfile("Tabbladen.css");
/*header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=Tabbladen.css");
header("Content-Length: ".filesize("Tabbladen.css"));*/
}else{
echo "error1";
}
}else{
echo "error2";
}
}?>
<?php if(isset($_GET['download'])){ if(!strstr($_GET['download'], '..')){ $bestand = $_GET['download']; /*header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=Tabbladen.css"); header("Content-Length: ".filesize("Tabbladen.css"));*/ }else{ } }else{ } }?>
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?
|