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 :

Download file - lecture jpg, png - mais ok sur pdf


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut Download file - lecture jpg, png - mais ok sur pdf
    Bonjour

    je suis confronté à un problème que je n'arrive pas à comprendre.

    Je réussis à uploader des fichiers (jpg, png, gif, et pdf) en stockant le nom du fichier renommé dans ma base de données et mes fichiers dans un dossier DOCUMENTS

    Je réussis à downloader mes fichiers (jpg, png, gif, pdf...) sur mon ordi mais je n'arrive seulement à lire mes fichiers .pdf....les autres formats de fichiers se téléchargent bien mais je n'arrive pas à les lire alors qu'ils sont dans le même dossier.....

    je vous laisse mon code.
    Par la même occasion, pouvez-vous me dire si côté sécurité, cela peut convenir....



    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    function testGetInt($var) {
     if (!is_numeric($var) && !is_int($var) && empty($var)) {
      return false;
     }
     return true;
    }
     
    function testGetStr($var) {
     if (!is_string($var) && empty($var)) {
      return false;
     }
     return true;
    }
     
     
    if (isset($_GET['id']) && isset($_GET['champ'])) {
     
     $id = Secur::protect($_GET['id']);
     $champ = Secur::protect($_GET['champ']);
      //var_dump($id); ok
      //var_dump($champ); ok 
     
     if (testGetInt($id)) {
      if (testGetStr($champ)) {
     
       $sql = "SELECT $champ FROM joueurs WHERE id=:id";
     
       $stmt = $pdo->prepare($sql);
       $stmt->bindValue(":id", $id, PDO::PARAM_INT ); // 
       $stmt->execute();  
     
       $data = $stmt->fetch();
       //var_dump($data); 
       //echo $data[$champ]; 
       //die; 
     
       $filepath = '../DOCUMENTS/' .$data[$champ];
     
       if (file_exists($filepath)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($filepath));
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' .filesize($filepath));
        readfile($filepath);
        exit; 
     
       } else {
        header("HTTP/1.1 404 Not Found"); 
        exit; 
       }
     
      } else {
       echo('hoho !! vilain petit internaute !!');
       exit;
      }
     } else {
      echo('hoho !! vilain petit internaute !!');
      exit;
     }
    }

    Merci pour vos retours

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Apparemment cela viendrai de mes header

    J'ai lu que cela pourrait venir d'un espace interdit ou autre...

    s'il y a un spécialiste des entêtes....

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Bon j'y suis arrivé via une approche non orthodoxe que j'ai testé et qui a fonctionné

    j'ai renvoyé vers un nouveau fichier avec un nouveau header.


    Néanmoins si quelqu'un peut m'éclairer avec de bonnes pratiques....

  4. #4
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Salut,
    Il-y a un content-type pour le pdf https://developer.mozilla.org/fr/doc...TTP/MIME_types il est logique d'utiliser le bon content-type sur le bon type de fichier pour éviter les surprises je pense . Pour la sécurité requête préparé ok Par contre j'aurais aussi injecté le paramètre $champs dans un bindValue pour la lisibilité et la sécurité c'est à cela que sert les requêtes préparées https://www.php.net/manual/en/pdo.prepare.php.

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

Discussions similaires

  1. download.file d'une image mais mauvaise qualité
    Par mathieu_r dans le forum R
    Réponses: 1
    Dernier message: 22/04/2013, 03h04
  2. Réponses: 17
    Dernier message: 15/05/2006, 12h28
  3. Marche sous FF mais pas sur IE...
    Par benjiiim dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/11/2005, 10h54
  4. [CSS] border-collapse sur les TR mais pas sur les TD.
    Par hpfx dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 03/04/2005, 16h16
  5. Réponses: 11
    Dernier message: 17/03/2003, 10h56

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