header et force download [resolu]

header et force download [resolu] - PHP - Programmation

Marsh Posté le 30-03-2006 à 19:33:18    

dabord, je sais c'est une question qui a été débattu mille fois...
je suis aller faire un tour ici => http://forum-images.hardware.fr/themes_static/images_forum/1/recherche.gif
la solution qui semble bien fonctionner pour tout le monde:

Code :
  1. <?php
  2. header('Content-disposition: attachment; filename='.$_GET['n']);
  3. header('Content-Type: application/force-download');
  4. header('Content-Transfer-Encoding: '.$_GET['ty'].'\n');
  5. header('Content-Length: '.$_GET['ta']);
  6. header('Pragma: no-cache');
  7. header('Cache-Control: must-revalidate, post-check=0, pre-check=0, public');
  8. header('Expires: 0');
  9. readfile('FTP/'.$_GET['n']);
  10. ?>


sachant que $_GET['ty'] le type et $_GET['ta'] la taille  proviennent tout deux des infos de $_FILE (lors de l'upload) precedement stocker en BDD.
le fichier existe sur le serveur et si je fait un print_r($_GET) mon array as bien toute les infos requises
 
maintenant ce qui se passe avec un un fichier text/plain essai.txt 3175 Octets:
-> avec FF vous avez choisi d'ouvrir telecharger.php type de fichier PHP Script, si je le telecharge, il est vide
-> avec IE voulez-vous ouvrir ou enregistrer ce fichier ? telecharger.php PHP Script 3,10 ko, si je le telecharge, il est vide aussi
 
EDIT: je n'utilisais pas la bonne valeur de $_GET pour le nom de fichier, a part ca le code fonctionne tres bien, merci a anapajari d'avoir fait de la maieutique a l'interieur de moi ;)


Message édité par mechkurt le 31-03-2006 à 12:04:07

---------------
D3
Reply

Marsh Posté le 30-03-2006 à 19:33:18   

Reply

Marsh Posté le 30-03-2006 à 20:02:27    

Reply

Marsh Posté le 31-03-2006 à 07:56:23    

Code :
  1. <?php
  2. header('Content-disposition: attachment; filename='.$_GET['n']);
  3. //header('Content-Type: application/force-download');
  4. header('Content-Type: application/octet-stream');
  5. header('Content-Transfer-Encoding: '.$_GET['ty'].'\n');
  6. header('Content-Length: '.$_GET['ta']);
  7. header('Pragma: no-cache');
  8. header('Cache-Control: must-revalidate, post-check=0, pre-check=0, public');
  9. header('Expires: 0');
  10. readfile('FTP/'.$_GET['n']);
  11. ?>


donne exactement le même resultat, mais merci quand même pour ta reponse...
 
vu qu'il me propose telecharger.php, c'est la: header('Content-disposition: attachment; filename='.$_GET['n']); qu'il y un PB non ?


---------------
D3
Reply

Marsh Posté le 31-03-2006 à 08:41:45    

je ne comprends pas trop ce que les caractères '\' et 'n' font à la fin de la ligne 5, c'est pas logique ?


Message édité par smaragdus le 31-03-2006 à 08:44:10
Reply

Marsh Posté le 31-03-2006 à 09:25:56    

ben dans tout les exemples que j'ai trouvé, et en particulier celui la il s'y trouve...
il me semble bien que j'ai deja essayé sans mais je suis tellement desespere que dans le doute je retente de ce pas ;)
 
EDIT: nop toujours le même resultat :(
 
jai aussi essayé ca (mettre les valeurs d'egal entre " ):

Code :
  1. <?php
  2. header('Content-disposition: attachment; filename="'.$_GET['n'].'"');
  3. header('Content-Type: application/force-download');
  4. header('Content-Transfer-Encoding: '.$_GET['ty']);
  5. header('Content-Length: '.$_GET['ta']);
  6. header('Pragma: no-cache');
  7. header('Cache-Control: must-revalidate, post-check="0", pre-check="0", public');
  8. header('Expires: 0');
  9. readfile('FTP/'.$_GET['n']);
  10. ?>


sans plus de resultat...
sur ce site:
http://www.lephpfacile.com/tips/index.php?p=12
et sur pas mal d'exemple de:
http://fr.php.net/header
pas de \n
 
par contre la:
http://www.destrucsaweb.com/ressou [...] oto_45.php
il le mettent...
 
enfin tous ca ne m'avance pas beaucoups [:ruisseau de larmes]


Message édité par mechkurt le 31-03-2006 à 10:01:14

---------------
D3
Reply

Marsh Posté le 31-03-2006 à 11:15:16    

ça a surement rien a voir mais pourquoi est ce que $_GET['ty'] contient "php" alors qu'il s'agit d'un fichier txt?

Reply

Marsh Posté le 31-03-2006 à 11:21:41    

Code :
  1. <?php
  2. print_r($_GET);
  3. /*
  4. header('Content-disposition: attachment; filename="'.$_GET['n'].'"');
  5. header('Content-Type: application/force-download');
  6. header('Content-Transfer-Encoding: '.$_GET['ty']);
  7. header('Content-Length: '.$_GET['ta']);
  8. header('Pragma: no-cache');
  9. header('Cache-Control: must-revalidate, post-check="0", pre-check="0", public');
  10. header('Expires: 0');
  11. readfile('FTP/'.$_GET['n']);
  12. */
  13. ?>


ca donne ca:
Array ( [f] => isartis_test.txt [ty] => text/plain [ta] => 3175 )
moi je vois aucune erreur [:airforceone]


---------------
D3
Reply

Marsh Posté le 31-03-2006 à 11:33:15    

ahh bin je sais pas c'est toi qui disais:

Citation :

maintenant ce qui se passe avec un un fichier text/plain essai.txt 3175 Octets:
-> avec FF vous avez choisi d'ouvrir telecharger.php type de fichier PHP Script, si je le telecharge, il est vide


 
edit: et tu es sur que ton

Code :
  1. readfile('FTP/'.$_GET['n']);

retourne quelque chose!


Message édité par anapajari le 31-03-2006 à 11:36:26
Reply

Marsh Posté le 31-03-2006 à 11:50:51    

> donne exactement le même resultat, mais merci quand même pour ta reponse...
 
normal, tu a laissé ton Content-disposition: attachment, je ne l utilise jamais ça donne l impression à l internaute qu on le fait patienter.
 
Maintenant, si tu veux utiliser un attachement, c est pas du tout comme ça, Content-disposition: attachment devrait être dans la page d attente, sinon tel que tu l a écrit il ne trouve pas le fichier nommé $_GET['n'] puisqu il est dans le répertoire FTP. Donc fichier taille Zéro.

Reply

Marsh Posté le 31-03-2006 à 11:59:50    

oui mais je disait aussi...

Citation :

sachant que $_GET['ty'] le type et $_GET['ta'] la taille  proviennent tout deux des infos de $_FILE (lors de l'upload) precedement stocker en BDD.
le fichier existe sur le serveur et si je fait un print_r($_GET) mon array as bien toute les infos requises


 ;)
hors les infos y sont, mais $_GET['n'] != de $_GET['f']  
 :jap:  
merci a toi de m'avoir aider a trouver mon bug, encore une fois, j'ai pas eu les yeux en face des trous...


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

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