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 :

Problème avec un script de force download.


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Problème avec un script de force download.
    Bonsoir,
    Je voudrais forcer le téléchargement d'une image, pour cela j'utilise ce 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
    <?php
    switch(strrchr(basename($Fichier_a_telecharger), "." )) {
    	case ".gz": $type = "application/x-gzip"; break;
    	case ".tgz": $type = "application/x-gzip"; break;
    	case ".zip": $type = "application/zip"; break;
    	case ".pdf": $type = "application/pdf"; break;
    	case ".png": $type = "image/png"; break;
    	case ".gif": $type = "image/gif"; break;
    	case ".jpg": $type = "image/jpeg"; break;
    	case ".txt": $type = "text/plain"; break;
    	case ".htm": $type = "text/html"; break;
    	case ".html": $type = "text/html"; break;
    	default: $type = "application/octet-stream"; break;
    }
     
    header("Content-disposition: attachment; filename=$Fichier_a_telecharger" );
    header("Content-Type: application/force-download" );
    header("Content-Transfer-Encoding: $type\n" ); // Surtout ne pas enlever le \n
    header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger));
    header("Pragma: no-cache" );
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public" );
    header("Expires: 0" );
    readfile($chemin . $file);
    ?>
    Mais lorsque je l'utilise dans une page, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="telecharger.php?file='wall2.jpg'&chemin='images/'">Test</a>
    . Cela télécharge le fichier "telecharger.php" au lieu de mon image.

    J'aimerai savoir si quelqu'un avait un solution. Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ou sont définies les variables ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Enfaite, je ne connais rien au php, mais j'aimerais utiliser ce script.
    Pourrais tu donc, m'expliquer ce que tu entends par "définir une variable" ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Par exemple $Fichier_a_telecharger ca vaut quoi dans ton script ?
    Dans ce que tu nous montres, cette variable ne reçoit pas de valeur.

    Au passage quand même, ton script est un trou de sécurité énorme : il permet le téléchargement de n'importe quel fichier du serveur web (et meme potentiellement au déjà), y compris des fichiers de mot de passe.
    Le chemin doit être inscrit en dur dans le script et non passé comme paramètre dans l'url (ou alors il faut le controler très précisemment).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Tu connaitrais pas une autre façon de faire ça ?

    Et $fichier a télécharger est définie non ?
    $fichieratelecharger=filename..

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et $fichier a télécharger est définie non ?
    $fichieratelecharger=filename..
    Ce n'est pas ce qui est écris dans ton script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $Fichier_a_telecharger = str_replace(array(' ','`','"','\'','\\','/'),'',$_GET['file']);
    $chemin ="images/";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci, ca marche mais je ne peux pas lire l'image..

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ouvre le fichier obtenu dans un editeur de texte, il doit y avoir une erreur PHP au début.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Si tu parle du fichier telecharger.php il n'y a pas d'erreur . et dans le fichier .jpg bein y'a rien dedans.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sur ta derniere ligne ce n'est pas $file mais $Fichier_a_telecharger
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Ohh !! Merci beaucoup ! Est ce que tu serais comment sécuriser un peu le script ? Stp et encore merci

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as quelle version de php ?

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    5.3.2-1ubuntu4.5

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Jaack Voir le message
    5.3.2-1ubuntu4.5
    pour l'extension du fichier utilise pathinfo, pour le mime fileinfo

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ext = pathinfo($monfichier, PATHINFO_EXTENSION);
    $mime = finfo_file(finfo_open(FILEINFO_MIME), $monfichier);

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Je met ça à la place de Fichier à télécharger et chemin ?

    Je suis vraiment débutant, désolé de mon incompréhension..

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Jaack Voir le message
    Je met ça à la place de Fichier à télécharger et chemin ?

    Je suis vraiment débutant, désolé de mon incompréhension..
    oui

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    J'aimerais encoer quelques explication, désolé ^^.
    Déja le quel d'entre les deux est le chemin ?
    Ensuite quesqu'appelle la variable "PATINFO EXTENSION" ?

    Merci de ton aide !

  19. #19
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $type = finfo_file(finfo_open(FILEINFO_MIME), $chemin . $Fichier_a_telecharger);
     
    header("Content-disposition: attachment; filename=$Fichier_a_telecharger" );
    header("Content-Type: application/force-download" );
    header("Content-Transfer-Encoding: $type\n" ); // Surtout ne pas enlever le \n
    header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger));
    readfile($chemin . $chemin . $Fichier_a_telecharger);

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup tout les deux !!
    Pour ceux qui voudrait le code en entier :
    Code php : 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
    <?php
    $Fichier_a_telecharger = str_replace(array(' ','`','"','\'','\\','/'),'',$_GET['file']);
    $chemin ="images/";
    switch(strrchr(basename($Fichier_a_telecharger), "." )) {
    	case ".png": $type = "image/png"; break;
    	case ".gif": $type = "image/gif"; break;
    	case ".jpg": $type = "image/jpeg"; break;
    	default: $type = "application/octet-stream"; break;
    }
     
    $type = finfo_file(finfo_open(FILEINFO_MIME), $chemin . $Fichier_a_telecharger);
     
    header("Content-disposition: attachment; filename=$Fichier_a_telecharger" );
    header("Content-Type: application/force-download" );
    header("Content-Transfer-Encoding: $type\n" ); // Surtout ne pas enlever le \n
    header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger));
    readfile($chemin . $Fichier_a_telecharger);
    ?>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. (Batch et VBS) Petit probléme avec un script batch VBS
    Par Edoxituz dans le forum Windows
    Réponses: 11
    Dernier message: 27/02/2006, 17h21
  2. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26
  3. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56
  4. Problème avec un script d'ouverture de pop-up
    Par HNT dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/08/2005, 16h37
  5. problème avec un script de generation de nom de login
    Par black_code dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2005, 13h51

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