IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Forcer le téléchargement d'un PDF en SSL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Par défaut Forcer le téléchargement d'un PDF en SSL
    Bonjour,

    Je viens récemment de migrer mon site en HTTPS et certains de mes scripts PHP ne fonctionnent plus... Cela concerne particulièrement le téléchargement forcé et sécurisé d'un fichier pdf. Faut-il des header spécifiques en SSL ? Voici mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php
    	ignore_user_abort(true);
    	@set_time_limit(0); // supprimer limite de temps pour le script
     
    	$path = $_SERVER["DOCUMENT_ROOT"]."/toto/"; // chemin de mon pdf
     
    	$dl_file = preg_replace("([^\w\s\d\-_~,;:\[\]\(\).]|[\.]{2,})", '', $_GET['download_file']); // validation du nom du fichier
    	$dl_file = filter_var($dl_file, FILTER_SANITIZE_URL); // Virer caractères invalides
    	$fullPath = $path.$dl_file;
     
    	if ($fd = fopen ($fullPath, "r")) {
    		$fsize = filesize($fullPath);
    		$path_parts = pathinfo($fullPath);
    		$ext = strtolower($path_parts["extension"]);
    		switch ($ext) {
    			case "pdf":
    			header("Content-type: application/pdf");
    			header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a file download
    			break;
    			default;
    			header("Content-type: application/octet-stream");
    			header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
    			break;
    		}
    		header("Content-length: $fsize");
    		header("Cache-control: private"); //Ouvrir directement le pdf
    		while(!feof($fd)) {
    			$buffer = fread($fd, 2048);
    			echo $buffer;
    		}
    	}
    	fclose ($fd);
    	exit;
    ?>

  2. #2
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Par défaut
    J'ai des warnings dans les logs php :

    Warning: Cannot modify header information - headers already sent by
    (output started at /var/www/html/toto.php:1) in
    /var/www/html/download.php on line 17

    Warning: Cannot modify header information - headers already sent by
    (output started at /var/www/html/toto.php:1) in
    /var/www/html/download.php on line 18

    Warning: Cannot modify header information - headers already sent by
    (output started at /var/www/html/toto.php:1) in
    /var/www/html/download.php on line 26

    Warning: Cannot modify header information - headers already sent by
    (output started at /var/www/html/toto.php:1) in
    /var/www/html/download.php on line 27

  3. #3
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    /var/www/html/download.php on line 17


    Que contient cette fameuse ligne 17 ?

    Le message d'errreur indique qu'une sortie a déjà été effectuée et donc, que tu ne peux plus modifier le content-type.

    Si cette sortie n'est pas désirée; je présume donc que c'était un message d'erreur (ou warning ou notice ...).

    L'envoi d'un fichier pdf depuis https fonctionne parfaitement; ce n'est pas là la cause de ton erreur.

    Bonne journée.

Discussions similaires

  1. [MySQL] Forcer un téléchargement d'un fichier PDF
    Par Cristalinz dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/05/2014, 11h01
  2. Forcer le téléchargement d'un fichier .pdf
    Par Spanish_ dans le forum Langage
    Réponses: 2
    Dernier message: 25/06/2007, 19h53
  3. Réponses: 4
    Dernier message: 13/06/2007, 16h27
  4. [PHP-JS] Forcer le téléchargement d'une image JPG
    Par Amnesiak dans le forum Langage
    Réponses: 5
    Dernier message: 10/11/2006, 00h50
  5. Réponses: 2
    Dernier message: 23/03/2005, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo