forcer le telechargement

forcer le telechargement - PHP - Programmation

Marsh Posté le 22-08-2012 à 16:49:35    

Bonjour a tous!!!!!
 
Je connais un peu html mais avec php je suis depassé j'avoue  :?  
Je souhaiterais avoir vos lumieres :
 
J'aimerai sur une page qu'il y ait un lien pour regarder le fichier dans le navigateur (ça c'est ok)
mais aussi un autre si l'utilisateur veut telecharger le fichier sans le voir.
 
J'ai lu qu'il fallait changer le header mais si je le fais (forcer le download) ça va telecharger sur les deux liens, non ?
 
Ma portion de code actuelle :
 

Code :
  1. <section id="content">
  2.           <h2>fichier1.pdf</h2>
  3.          
  4.                    
  5.           <div class="download_button">
  6.             <a href="downloads/fichier1.pdf">
  7.               <img src="ressources/telecharger.jpg" />
  8.             </a><br/>
  9.   <p align="center"><a href="downloads/fichier1.pdf">
  10.               <img src="ressources/regarder.jpg" /></p>
  11.             </a>
  12.           <br />
  13.           <br />
  14.    
  15.         </section>


 
Donc j'aimerai modifier le 2ieme pour telecharger directement sans changer chaque page une par une bien sur  :P  
 
Merci infiniement!

Reply

Marsh Posté le 22-08-2012 à 16:49:35   

Reply

Marsh Posté le 24-08-2012 à 10:43:06    

Moi je te propose ça :
 

Code :
  1. <input type="button" onclick="window.open('pdf.php?pdf_name=rapport.pdf','Fiche','toolbar=no,status=no,width=920 ,height=500,scrollbars=yes,location=no,resizable=yes,menubar=no'); return false;" value="lire le pdf">
  2. <a href="rapport.pdf" target="_BLANK">telecharger le pdf</a>


 
dans t'as div content. Donc la tu as deux possibilité soit un bouton, soit un lien donc c'est a ton bon vouloir, je t'ai fait un exemple avec les deux.
 
Ensuite, j'ai créer une page qui s'appelle pdf.php ou j'ai écrit ce code :

Code :
  1. <?php
  2. header('Content-Type: application/pdf') ;
  3. header('Content-Disposition: inline') ;
  4. readfile(($_GET['pdf_name']));
  5. ?>


 
Donc en gros pour le premier bouton, tu vas ouvrir une nouvelle fenêtre avec ton pdf en lecture et le deuxieme tu ouvres un nouvel onglet pour telecharger ton pdf.
 
En espérant avoir pu t'aider.
 
Paul

Reply

Marsh Posté le 27-08-2012 à 16:16:45    

Merci beaucoup !  
 
C'etait tres utile ;)
 
top!

Reply

Marsh Posté le 27-08-2012 à 18:05:08    

sltpaulo a écrit :


Code :
  1. <?php
  2. header('Content-Type: application/pdf') ;
  3. header('Content-Disposition: inline') ;
  4. readfile(($_GET['pdf_name']));
  5. ?>




 
Jolie faille de sécurité là...
 
EDIT (pour un peu préciser les choses) : tu appelles readfile en lui donnant un paramètre qui vient directement de l'utilisateur, sans contrôle ou validation. Concrètement, ça signifie qu'en jouant sur la valeur du paramètre "pdf_name", on va pouvoir obtenir le contenu de n'importe quel fichier accessible à l'interpréteur PHP. Entre autres : code source des fichiers php (dans lesquels on pourrait avoir des mots de passe), fichiers système, et suivant les options de compilation de php, on peut même ouvrir des urls avec readfile.
 
Quand on fait ce genre de trucs, 2 règles à respecter absolument :
- on choisi un répertoire qui va contenir les fichiers qui peuvent être par ce biais (et rien d'autre)
- on s'assure que le paramètre passé à readfile pointe vers un fichier contenu dans ce répertoire


Message édité par Riokmij le 27-08-2012 à 21:52:28
Reply

Sujets relatifs:

Leave a Replay

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