[resolu]Forcer telechargement header() prob dans include() help

Forcer telechargement header() prob dans include() help [resolu] - PHP - Programmation

Marsh Posté le 29-09-2004 à 13:30:23    

Je m'explique en faisant simple :
Je veux forcer le téléchargement d'un fichier.
Ca fonctionne parfaitement si mon code ne se trouve pas dans un include exemple :
 
download.php

Code :
  1. $filename = "fichier.zip";
  2. $filedir = "http://domain.com/download/".$filename;
  3. header("Content-type: application/force-download" );
  4. header("Content-Disposition: attachment; filename=$filename" );
  5. readfile("$filedir" );


 
Donc si je vais sur la page download.php ça me lance la fenetre pour telecharger "fichier.zip"
 
 
Le probleme c'est que mon site fonctionne avec des include ce qui fait que ma page centrale est apellé dans le fichier index comme ci
include( 'centre.php' ) ;
 
Donc si je fais http://domain.com/index.php?page=download à la place de me lancer la fenetre de téléchargement ça va m'afficher tout le code du fichier "fichier.zip" dans ma page.
 
 
Si quelqun pouvais m'aider ce serait bien sympa j espere avoir été assez clair.


Message édité par Masenko le 29-09-2004 à 16:29:26
Reply

Marsh Posté le 29-09-2004 à 13:30:23   

Reply

Marsh Posté le 29-09-2004 à 16:06:03    

ptet plus faire
 
include 'page=centre&download'
 
et faire le traiment comme ca :??:

Reply

Marsh Posté le 29-09-2004 à 16:07:51    

masenko > problème d'envoi des headers !?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 29-09-2004 à 16:08:25    

oui en faite je fais ?page=download&id=1
donc ça ça va aller sur la page de download et injecter le header correspondant a l'id 1 mais a la place d'avoir la fenetre de download qui s'ouvre bah ça inscruste le code du fichier exe ou zip ou truc dans la page

Reply

Marsh Posté le 29-09-2004 à 16:10:18    

Reply

Marsh Posté le 29-09-2004 à 16:10:26    

Code :
  1. ob_start(); // en début de ta page
  2. //ton include  
  3. ob_end_flush(); // en fin de page


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 29-09-2004 à 16:11:02    

simogeo a écrit :

Code :
  1. ob_start(); // en début de ta page
  2. //ton include  
  3. ob_end_flush(); // en fin de page



tout le monde me dit que le ob_start c'est mal pour un gestion de redirection en header [:zytrasnif]

Reply

Marsh Posté le 29-09-2004 à 16:13:28    

simogeo je vais voir ça sinon j'ai trouvé ça :
 
 N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui génèreront un affichage avant que la fonction header()  ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.

Reply

Marsh Posté le 29-09-2004 à 16:15:44    

ui ... ben c'est l'erreur que je te signale :D
 
qui devrai siparaitre en gerant le flux... enfin si j'ai bien lu ta manière de procéder. Vu ce que me dis chacal chui pas sur ...  :whistle:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 29-09-2004 à 16:19:30    

Ca me plait pas trop d'utiliser ob_start et flush je vais donc mettre le code dans la page de l'index tout en haut et ça sera apellé seulement quand on sera sur la page ?page=download&id=pas_vide

Reply

Marsh Posté le 29-09-2004 à 16:19:30   

Reply

Marsh Posté le 29-09-2004 à 16:29:08    

Voilà ça fonctionne impec :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed