PDF dans compte sécurisé


haderach
WRInaute impliqué
WRInaute impliqué
 
Messages: 870
Inscription: 26 Aoû 2004

PDF dans compte sécurisé

Message le Sam Déc 08, 2007 21:34

Bonjour,

J'ai un petit soucis.

J'ai des internautes qui ont des comptes perso. Ils peuvent uploader des fichiers pdf et les consulter à partir de leur compte perso (accessible par login et mot de passe).

Ses fichiers sont stockés sur le disque.

Mon problème :comment empécher l'internaute A de consulter les fichiers PDF de l'internaute B?

Le tout avec PHP et mysql...

Merci pour votre aide

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Message le Sam Déc 08, 2007 23:02

Voici ce que je fais habituellement:

- lors de l'upload, donner un 'id' unique au fichier, le stocker dans un répertoire innaccessible via HTTP. Par commodité, je le renomme id.pdf
- lors de l'upload, insérer en base de donnée l'id de l'utilisateur et l'id du fichier
- pour accéder à un PDF, l'utilisateur devra passer par un fichier "dl.php" en passant en paramètre l'id du fichier
- vérifier en bdd s'il est bien l'utilisateur qui a envoyé le fichier
- si oui, lire le fichier en PHP (readfile...) et l'envoyer au navigateur avec les bons en-têtes.

Après tu peux rajouter la possibilité de conserver le nom original du fichier (stocker en bdd lors de l'upload, puis envoyer l'en-tête adéquat lors de la lecture du fichier)...

C'est une solution un peu plus lourde que si le download était direct, surtout pour les gros fichiers, PHP peut broncher...


haderach
WRInaute impliqué
WRInaute impliqué
 
Messages: 870
Inscription: 26 Aoû 2004

Message le Dim Déc 09, 2007 9:20

FloBaoti a écrit:- si oui, lire le fichier en PHP (readfile...) et l'envoyer au navigateur avec les bons en-têtes.


Cette solution me convient parfaitement mais comment tu fais cette partie (le readfile et SURTOUT l'envoi au navigateur avec les bons entetes).

J'avais pensé utiliser fpdf. Mais tu sembles utiliser une autre solution. Tu peux me guider pour ta solution?

merci d'avance :wink:

holmat
WRInaute discret
WRInaute discret
 
Messages: 175
Inscription: 28 Nov 2007

Re: PDF dans compte sécurisé

Message le Dim Déc 09, 2007 9:36

haderach a écrit:Bonjour,

J'ai un petit soucis.

J'ai des internautes qui ont des comptes perso. Ils peuvent uploader des fichiers pdf et les consulter à partir de leur compte perso (accessible par login et mot de passe).

Ses fichiers sont stockés sur le disque.

Mon problème :comment empécher l'internaute A de consulter les fichiers PDF de l'internaute B?

Le tout avec PHP et mysql...

Merci pour votre aide


bonjour,

puisque tu as une base, tu ne peux pas stocker la liste des fichiers que l'utilisateur a uploadé dans une table ??

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Message le Dim Déc 09, 2007 10:19

haderach a écrit:Cette solution me convient parfaitement mais comment tu fais cette partie (le readfile et SURTOUT l'envoi au navigateur avec les bons entetes).

J'avais pensé utiliser fpdf. Mais tu sembles utiliser une autre solution. Tu peux me guider pour ta solution?

merci d'avance :wink:

C'est dans la doc de PHP, à la fonction header:

Example#7 Utilisation de header() pour générer un fichier de type PDF ou d'un autre type
Code: Tout sélectionner
<?php
// Vous voulez afficher un pdf
header('Content-type: application/pdf');

// Il sera nommé downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// Le source du PDF original.pdf
readfile('original.pdf');
?>


Elvis
WRInaute discret
WRInaute discret
 
Messages: 114
Inscription: 20 Mai 2005

Message le Dim Déc 09, 2007 10:25

Les entêtes sont gérés en php avec la fonction header. Sur le manuel, t'as justement un exemple sur les entêtes à envoyer pour les fichiers pdf ;)

FloBaoti
WRInaute impliqué
WRInaute impliqué
 
Messages: 755
Inscription: 30 Avr 2006

Message le Dim Déc 09, 2007 10:30

Un peu en retard mais c'est ça...


Elvis
WRInaute discret
WRInaute discret
 
Messages: 114
Inscription: 20 Mai 2005

Message le Dim Déc 09, 2007 10:47

oups, j'avais pas vu, les choses vont si vite sur ce forum :p


haderach
WRInaute impliqué
WRInaute impliqué
 
Messages: 870
Inscription: 26 Aoû 2004

Message le Dim Déc 09, 2007 11:40

Super une bonne avancée.

MAIS, le fichier stocké sur mon disque n'est pas correctement lu. Acrobat me donne un problème.

Adobe Reader n'a pas pu ouvrir downloaded[1].pdf, car le type de fichier n'est pas pris en charge ou le fichier est endommagé (il a été envoyé en tant que pièce jointe et n'a pas été décodé correstement, par exemple).


lorsque je l'appele en direct pas de problème!

Une idée?


rog
WRInaute passionné
WRInaute passionné
 
Messages: 1662
Inscription: 21 Sep 2006

Message le Dim Déc 09, 2007 11:59

il y a plein de raisons possibles

essaies avec juste le parametre Location de header

rog


haderach
WRInaute impliqué
WRInaute impliqué
 
Messages: 870
Inscription: 26 Aoû 2004

Message le Dim Déc 09, 2007 12:01

J'ai résolu avec IE (faut voir avec les autres browsers)

En plaçant la ligne
header('Content-Disposition: inline; filename="downloaded.pdf"');


donc inline au lieu de attachement c'est bon.

Merci à tous.... :wink:


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google PDF Quick View

  • Liste des backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Google Browser TouchGraph
    Description du TouchGraph Google Browser (outil externe) : il s'agit d'un outil graphique permettant de visualiser des sites similaires (selon Google). On peut sauter de site en site, et se rendre compte facilement des communautés de sites, ou des nébuleuses de sites traitant du même sujet.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités