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 un téléchargement par URL dynamique


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Forcer un téléchargement par URL dynamique
    Bonsoir.

    Cela fait quelques jours que je but sur un bout de code pour mon site. Je voudrais proposer en téléchargement des fichiers, sans que le visiteur ne connaisse le répertoire de stockage.
    Pour cela, j'utilise donc un fichier get.php qui récupère les infos nécessaires dans l'URL pour fournir le fichier. J'ai droit à quelques warnings de la part des header (Cannot modify header information - headers already sent by...), qui ne sont pas bien graves, mais en plus au lieu de me fournir le fichier, j'ai droit à une page HTML incompréhensible.


    Voici le code de mon script get.php :
    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
    36
    37
    38
    39
    40
    41
    42
    <?php 
    if (isset($_GET['file']) && isset($_GET['type']) && isset($_GET['format'])) // Si le visiteur veut télécharger un fichier
    {	
    		if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) 
    		{
    			$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
    		} 
     
    		elseif (!empty($_SERVER['HTTP_USER_AGENT'])) 
    		{
    			$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
    		}
     
    		$name = htmlentities($_GET['file'], ENT_QUOTES); // sécurisation de la variable
    		$type = htmlentities($_GET['type'], ENT_QUOTES); // sécurisation de la variable
    		$format = htmlentities($_GET['format'], ENT_QUOTES); // sécurisation de la variable
     
    		if($type == "video")
    		{
    			$file = "downloads/videos/".$name.".".$format;
     
    			if (eregi('MSIE[[:space:]]+[0-9]+\.[0-9]+', $HTTP_USER_AGENT)) 
    			{ //if browser is IE compatible
    				header('Content-Type: application/octetstream');
    				header('Content-Disposition: inline; filename="'.$name.$format.'"');
    				header('Expires: 0');
    				header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    				header('Pragma: public');
    			} 
     
    			else 
    			{ //if browser is not IE compatible
    				header('Content-Type: application/octet-stream');
    				header('Content-Disposition: attachment; filename="'.$name.$format.'"');
    				header('Expires: 0');
    				header('Pragma: no-cache');
    			} 
    			//header("Location : $dir".$name.$format."");*/
    			readfile($file);
    		}
    }
    ?>
    Et l'allure de mon URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://furankum.free.fr/get.php?file=Stripped&type=video&format=wmv
    Pour info, je suis hébergé chez Free (ça se voit à l'URL ).

    Merci et bonne soirée
    Dernière modification par Invité ; 07/12/2007 à 23h02.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 808
    Points : 912
    Points
    912
    Par défaut
    Bonjour,
    Essayes de faire content_type="video/x-ms-wmv"

    Je n'ai pas vraiment essayé mais ton code fonctionne tel quel s'il s'agit d'un fichier zip. Donc, pour moi il s'agit d'un problème de MIME.

  3. #3
    Invité
    Invité(e)
    Par défaut
    J'ai essayé plusieurs content-type (videos) et le résultat est toujours le même.

  4. #4
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    commence déjà par faire en sorte de ne plus avoir de warning.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je veux bien, mais à part les ignorer (avec '@'), je ne vois pas comment les virer... Ma page ne contient aucun code HTML, et mon code aucune commande pouvant envoyer un en-tête HTTP, et j'ai pourtant des warnings.
    Il n'y a ni espace ou caractère en début de fichier non plus. Donc ne plus avoir de warning, ok, mais comment ?

  6. #6
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Il n'y a ni espace ou caractère en début de fichier non plus. Donc ne plus avoir de warning, ok, mais comment ?
    Si la preuve.

    Tu as sûrement un caractère invisible en début de fichier (possible avec UTF8 et le Byte Order Mark (BOM) à vérifier dans ton editeur.

    Un peu d'info :

    http://fr.wikipedia.org/wiki/Marque_d'ordre_des_octets

  7. #7
    Invité
    Invité(e)
    Par défaut
    C'est bon, les téléchargements fonctionnent
    Je ne savais pas que UTF-8 BOM ajoutait des en-têtes, j'ai appris quelque chose ^^

    Donc je vais voir en mettant en UTF-8 sans BOM, sinon je laisserai en ANSI.
    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Téléchargement de fichier par url
    Par lesultan2007 dans le forum VB.NET
    Réponses: 7
    Dernier message: 15/07/2009, 14h44
  2. Réponses: 3
    Dernier message: 08/09/2008, 14h04
  3. Téléchargement d'une URL dynamique
    Par anthropo dans le forum Langage
    Réponses: 1
    Dernier message: 27/11/2007, 10h32
  4. Compression par Huffmann dynamique
    Par kael kael dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 01/04/2004, 21h51
  5. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20

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