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 :

[Sécurité] Protéger des documents en téléchargement


Sujet :

Langage PHP

  1. #21
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    oui, désolé. ça fait un petit moment que je cherche une solution à ce problème et j'en perds les pédales !

    Ok, j'ai pigé l'idée, qui me plait bien.

    Par contre, là je te suis pas bien, c'est quand tu dis : "tu download en changeant le header()..."

    Excuses moi, je ne suis pas une pointure en php, mais je m'accroche
    En tout cas, merci pour ton aide

  2. #22
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    La fonction header() permet d'envoyer au serveur differentes informations pour lui donner des indications...tu peux par exemple faire une redirection header("location: wwW.google.fr") ou alors dire qu'un fichier doit être telecharger, et non pas afficher dans le navigateur

    bon courage!

  3. #23
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Oui, je sais à quoi correspond cette fonction mais c'est la manière dont je dois l'utiliser pour le download que je ne comprends pas.

    A quel moment dans le code, dois-je entre le header(location: ....) pour diriger le visiteur vers le bon fichier ?

    Après cette partie là ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'. basename($url) .'";');
    header('Content-Length: '. filesize($url));

  4. #24
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par creatchy
    Oui, je sais à quoi correspond cette fonction mais c'est la manière dont je dois l'utiliser pour le download que je ne comprends pas.

    A quel moment dans le code, dois-je entre le header(location: ....) pour diriger le visiteur vers le bon fichier ?

    Après cette partie là ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'. basename($url) .'";');
    header('Content-Length: '. filesize($url));

    non non, le header(location cetait seulement pour expliquer a quoi pouvait servir le header...t'en a pas besoin...


    Je te repond vite fais, juste avec des bribes d'info qui me reviennent en tete...il me semble que juste tes headers devraient suffire.
    Par contre, fo bien tester si l'utilisateur est loggué avant d'appliquer ..

    Sinon tente quelque chose comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // $file = URL reel du fichier
    // taille = la taille de ce fichier
     header("Content-Type: application/force-download; name=\"$file\"");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: $taille");
    header("Content-Disposition: attachment; filename=\"$file\"");
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");

  5. #25
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Bon, ok, je regarde ça. Merci encore.

  6. #26
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Salut MadCat,

    Bon, j'ai réussi à mettre tout ça en place.
    Merci encore pour ton aide.

    Voici le code de la page dowload.php pour ceux que ça peut aider :

    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
     
    <?php
     
    session_start ();
    if(!isset($_SESSION['id']) && !isset($_SESSION['password']))
     {
     
      header("location: accueil.php") ;
     
     }
     
    require("accès_à_la_base");
     
    $lien = $_GET['download'];
     
    $sql = "SELECT lien_document FROM fichiers WHERE id_doc='$lien'";
    $resultat = mysql_query($sql);
     
    while ($donnees = mysql_fetch_array($resultat)) {
    $url = $donnees['lien_document'];
    header('Content-Description: File Transfer');
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="'. basename($url) .'"');
    header('Content-Length: '. filesize($url));
    readfile($url) OR die();
    }
    ?>
    Si le visiteur n'est pas logué, il ne peut pas télécharger de document.
    Par contre, existe-t-il une manière d'ouvrir le document à télécharger, plus rapidement ? La commande "readfile" doit lire le fichier apparemment avant de pouvoir l'ouvrir et plus la taille du fichier est élevée et plus l'ouverture prend du temps... Je chipote mais j'aime bien aller au bout du sujet.

    Merci encore à vous tous pour votre aide.

  7. #27
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ah quoi sert le readfile??? Tu veut lire le fichier pour l'affiche c'est ca?

  8. #28
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    J'ai repris cette portion de code et effectivement le readfile permet de lire le fichier pour l'afficher. Si tu le retires, tu auras une erreur lors de l'ouverture ou l'enregistrement du fichier.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Joomla!] Je cherche un composant qui permet le téléchargement des documents PDF
    Par jockhip12 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/02/2012, 10h26
  2. Réponses: 3
    Dernier message: 03/08/2009, 16h32
  3. peut-on protéger des documents pdf avec 4d?
    Par longomarc dans le forum 4D
    Réponses: 2
    Dernier message: 06/10/2007, 13h11
  4. [Sécurité] protéger un formulaire des robots-spammeurs
    Par Djakisback dans le forum Langage
    Réponses: 10
    Dernier message: 07/07/2006, 12h02

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