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 :

Protection de fichier en téléchargement


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 23
    Points
    23
    Par défaut Protection de fichier en téléchargement
    Bonjour,

    j'essaie de masquer l'url complète d'un fichier cependant je n'y arrive pas.
    Je dispose de plusieurs dossiers :

    C:\...\wamp\www\mon_site\inc\download.php (chemin du fichier download.php appelé lorsque je souhaite télécharger un fichier)

    Voici une partie de son contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    		$sql = 'SELECT url
    			FROM `'.$db['t_ctrl'].'`
    			WHERE id_controle =\''.$id_ctrl.'\'';
    		$ans = mysql_query($sql);
    		$row = mysql_fetch_array($ans);
    		$r_url = $row['url']; // url du fichier
    		echo $r_url;
     
            header("Content-type: application/force-download");
            header("Content-Length: ".$r_url);
            header("Content-Disposition: attachment; filename=".basename($r_url);
            readfile($r_url);
    $r_url = docs/rapports/2009-07-23_1_2.pdf

    et mon dossier ou se trouve le fichier est :
    C:\...\wamp\www\mon_site\docs\rapports\2009-07-23_1_2.pdf

    Lorsque je clique sur le lien, j'obtiens un fichier docs_rapports_2009-07-23_1_2.pdf qui n'est pas le réel fichier pdf, mais qui contient le code source php de la page courante..

    et je trouve dans celui ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>Warning</b>:  readfile(2009-07-23_1_2.pdf) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in <b>C:\Program Files\Wamp\www\mon_site\inc\download.php</b> on line <b>38</b>

  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
    es-tu sur de la valeur de ton $r_url ?
    parce que le chemin que tu nous indique, n'est celui dans l'erreur.

    sinon pourquoi tu mets le chemin dans l'en-tête content-length ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 23
    Points
    23
    Par défaut
    oui, la valeur de $r_url est la bonne,
    ensuite j'ai modifié le header de content-length comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-Length: filesize($r_url)");
    mais ça ne change rien

  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
    oui, la valeur de $r_url est la bonne,
    oui enfin si readfile() ne trouve pas le fichier c'est que ton chemin n'est pas si bon que ca
    D'ailleurs si ton fichier php est dans "inc", ca donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readfile('/' . $r_url);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readfile('../' . $r_url);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 23
    Points
    23
    Par défaut
    J'ai essayé les deux versions, et rien n'y fait..
    j'obtient respectivement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>Warning</b>:  readfile(/docs/rapports/2009-07-23_1_2.pdf) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in <b>C:\Program Files\Wamp\www\mon_site\inc\download.php</b> on line <b>38</b><br />
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>Warning</b>:  readfile(../docs/rapports/2009-07-23_1_2.pdf) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in <b>C:\Program Files\Wamp\www\mon_site\inc\download.php</b> on line <b>38</b><br />
    j'ai essayé en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readfile('/' . $r_url);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readfile('C:/Program Files/Wamp/www/mon_site/' . $r_url);
    et la il me transmet le fichier, cependant lorsque je l'ouvre avec un editeur de texte (le fichier faisait 8 octets et j'y avais inscrit 'coucou!!'), je retrouve le code de la page courante, et en plein milieu : 'coucou!!' ...

    de plus, lorsque je fais un simple test sur la taille du fichier, il me répond bien que le fichier a une taille de 8.

  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
    A ce moment la fait comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readfile($_SERVER['DOCUMENT_ROOT'] .'/'. $r_url);
    je retrouve le code de la page courante, et en plein milieu : 'coucou!!' ...
    le code de la page courante ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,
    y a un script pareil à la faq http://php.developpez.com/faq/?page=...rotectdownload
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 23
    Points
    23
    Par défaut
    ouais j'ai déjà essayé en reprenant ce script ça ne fonctionne pas..

    et concernant le code, le fichier que je télécharge contient bien le mot 'coucou!!' que j'ai mis mais autour j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    </p></div>coucou!!
    		<div id="pied_de_page"> ...
    ce qui signifique qu'il doit y avoir un problème ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            header("Content-type: application/force-download");
            header("Content-Length: ".$r_url);
            header("Content-Disposition: attachment; filename=".basename($r_url);
    mais je n'arrive pas à trouver..

  9. #9
    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
    Comment tu passes de ta page courante à la page de telechargement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    tu peux ajouter un fichier .htaccess dans le dossier racine

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 23
    Points
    23
    Par défaut
    je passe de la page courante à la page de téléchargement du fichier simplement par un lien download.php?f=[id_du_fichier]

  12. #12
    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
    Tu pourrais nous mettre un peu plus de code parce que je vois pas comment du code HTML arrive dans ton page download.php.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [MSDE] Protection du fichier MDF
    Par papouAlain dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/11/2013, 14h23
  2. Réponses: 2
    Dernier message: 12/10/2006, 17h49
  3. Réponses: 4
    Dernier message: 04/09/2005, 23h57
  4. Désactiver la protection des fichiers systéme
    Par cartonis dans le forum Sécurité
    Réponses: 6
    Dernier message: 13/08/2005, 19h17
  5. [VB6] cryptage et protection de fichier INI
    Par khany dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 21/10/2003, 09h38

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