Telechargement restreint de fichiers pour user ds bd [Résolu]

Signaler
Messages postés
4
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
29 avril 2008
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour à tous,

La question n'est pas en rapport avec php, toutefois je pense que les érudits que vous êtes pourrez peut-être m'aiguiller.
Voilà, voilà, toutes mes excuses pour cette intrusion :)

J'ai, sur un site banal, des utilisateurs enregistrés dans une base mysql qui ouvrent une session grâce à leur login et pass.
Certains fichiers (pdf,doc) leur sont destinés (chacun individuellement), j'aurais voulu savoir comment restreindre le téléchargement de ces fichiers à leur session bien précise.

Pour évidemment éviter que ces documents soient téléchargeables directement par tout le monde grâce à l'url exacte.

Mon site est en php sur iis, ce qui vous évite déjà de me suggérer le htaccess (qui ne me paraît pas indiqué de toute manière mais je me trmope peut-être).

Avez-vous une piste ?

Merci à tous et bonne soirée.

4 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

C'est assez simple, en fait.
Il faut que tu interdises purement et simplement l'accès via HTTP au(x) répertoire(s) qui contient(nent) les fichiers en question. IIS permet de faire ça avec les permissions.
Tu peux aussi placer les fichiers à protéger en dehors de l'arborescence de publication web.

Ensuite, il faut utiliser PHP pour :
1. Vérifier que l'utilisateur est connecté
2. Vérifier ses droits (quels fichiers lui sont accessibles)
3. Lire le fichier qu'il demande (file_get_contents() en PHP5, fopen(), fgets() et fclose() en PHP4)
4. Envoyer un header correspondant au type de fichier au navigateur :
header('Content-type: application/pdf');
par exemple, pour un PDF
5. Afficher simplement le contenu du fichier sur la sortie standard (un vulgaire echo fait tout à fait l'affaire).
6. C'est tout...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Messages postés
4
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
29 avril 2008

ça alors , ça me coupe la chique que ce soit si simple.
Les fichiers sont donc placés hors rép web. C'est nickel, je pensais qu'il y aurait des problèmes de droit d'accès même pour les scripts.

Merci pour ton aide efficace, par contre si je veux que le fichier ne soit pas lu en streaming (acrobat dans explorer) mais directement proposé au téléchargement, c'est une question de header?
Messages postés
4
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
29 avril 2008

Merci neigedhiver :)

Ta piste fut des plus précieuses. Je réponds à ma dernière question de la sorte :

header('Content-type: application/pdf');

header('Content-Disposition: attachment; filename="downloaded.pdf"');

readfile("C:\file.pdf");


Bonne soirée à toi
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Pour les permissions, l'explication est simple : PHP n'accède pas aux fichiers via HTTP, mais via le système de fichiers. Si les fichiers ne sont pas accessibles depuis le web, si PHP a les permissions pour y accéder, alors c'est bon.

Et pour forcer le téléchargement... Tu as posté pendant que j'écrivais, j'allais justement t'orienter vers l'exemple 7 de cette page de doc de PHP ;)

Bonne continuation :)

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...