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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    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
    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 averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    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
    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 averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    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
    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
    Membre émérite
    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
    Par défaut
    tu peux ajouter un fichier .htaccess dans le dossier racine

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    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]

  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
    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, 15h23
  2. Réponses: 2
    Dernier message: 12/10/2006, 18h49
  3. Réponses: 4
    Dernier message: 05/09/2005, 00h57
  4. Désactiver la protection des fichiers systéme
    Par cartonis dans le forum Sécurité
    Réponses: 6
    Dernier message: 13/08/2005, 20h17
  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, 10h38

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