|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Bonjour à tous,
J'aimerais mettre en place un système sécurisé pour le téléchargement de fichiers appartenant à mes membres. Voilà ce que je souhaite faire et ma solution avec (si j'en ai une): 1ère étape: Le membre uploade un fichier dans un dossier protégé par htaccess (on ne sait jamais). Le htaccess est-il "obligatoire"? Vaut-il mieux "planquer" mon dossier où les fichiers atterrissent? Ou quoi que je fasse le dossier est "récupérable"? 2ème étape: Je stocke la présentation du membre du fichier dans la bdd (donc un coup de insert into). 3ème étape: Je récupère le fichier, je valide ou non son contenu. 4ème étape: Partie admin, j'aimerais créer une page automatiquement avec comme nom, le nom du fichier. Ex: monndd.com/nomdufichier. Un peu comme les blogs, qui génèrent une page pour chaque article. Je suppose que c'est une question de get, d'url rewriting et de template. J'aimerais bien la procédure détaillée, si possible. 5ème étape: Si un autre membre demande à télécharger le fichier, je génère un lien du fichier par lien symbolique pour protéger le vrai chemin du fichier. Je laisse un accès au lien symbolique quelques jours (un ou deux) pour éviter les abus. (Je cherche aussi un moyen pour vérifier si le membre a vraiment demandé l'accès au fichier). A la fin de cette durée, je down le lien symbolique. Le lien symbolique est-il une bonne idée? Le but est de cacher le chemin original du fichier dans le dossier htaccess. J'ai remarqué que la plupart des sites passe par des sous-domaine pour lancer le téléchargement des fichiers. Est-ce une norme? J'ai lu qu'il fallait forcer le téléchargement mais je n'ai jamais trouvé pourquoi faut-il le faire. Dans un premier temps, j'aimerais votre avis sur mes idées et/ou des réponses à mes interrogations. Dans un second temps, n'hésitez pas à proposer vos idées d'amélioration. PS: Je voudrais faire quelque chose de propre et qui respecte les normes actuelles. Je ne suis pas pressé donc proposez vos idées. PS': Je ne connais que très peu la gestion de fichiers avec php donc évitez de me donner des réponses de 2 mots Merci pour vos réponses |
|
|
00
|
|
|
#2 | ||||||||
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Citation:
Citation:
Citation:
Pour l'url rewriting quelque chose du genre devrais fonctionner : Code .htaccess :
Ensuite dans mapage.php tu n'aura plus qu'a vérifier que le fichier existe et à en faire ce que tu veux. Citation:
Je te conseil d'utiliser encore une fois l'url rewriting, pour rediriger vers un fichiers download.php, fichier qui :
Le code de cette page dépendra de ce que tu veux faire, test fichiers sont-ils tous du même type ? Si non il faudra détecter le type pour l'envoyer dans le header PHP. Mais en gros quelque chose comme ça devais fonctionner : Code php :
Si tu veux plus de détails donne moi plus d'information et je me ferais un plaisir d'éclaircir les points obscures PS: Le sous domaine pour les téléchargement n'est pas un standard, c'est ton choix. |
||||||||
|
00
|
|
|
#3 |
|
Membre habitué
![]() Lucas GAUTHERONLycéen Inscription : décembre 2008 Messages : 106 ![]() |
Comme ça a été dit stocker les fichiers dans un dossier protégé par htaccess cest pas mal. Le must étant de les placer dans un dossier hors web, après ça dépend de l'environnement dans lequel tu travailles.
Pour le chemin du fichier. S'il est stocké dans ta base de données, alors pourquoi pas faire une page du type : download.php?file_id=... Après tu récupères dynamiquement le nom du fichier, si j'ai bien compris ce que tu voulais faire. |
|
|
00
|
|
|
#4 | ||||||||
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Citation:
Citation:
Je voulais éviter le .php?truc=xxx et n'avoir que "monndd.com/php/nomdufichier " dans l'url. Comment faire ça avec le htaccess? Citation:
Je souhaite protéger le lien source et donc si le membre retourne sur la source de téléchargement (clic droit>copier l'adresse d'origine du téléchargement), le lien est directement avec l'extension du fichier donc directement téléchargeable. Comment faire pour vérifier si le membre a le droit au lien vu qu'on ne passe pas par une page php avant? J'aimerais aussi éviter le "?" dans l'url, voici le chemin que j'aimerais avoir monndd.com/download/hashdunomdufichier(ou autre). Citation:
Merci pour ton aide |
||||||||
|
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Citation:
Le chemin du fichier n'est pas sauvegardé (je peux toujours essayer de faire ça mais comme je le dis un peu au dessus, je préfère éviter le .php?... et surtout cacher la source). Merci pour ta réponse. |
|
|
|
00
|
|
|
#6 | |||||
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Citation:
Citation:
Code :
Citation:
Avec plaisir |
|||||
|
00
|
|
|
#7 | |||||||||
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Citation:
Citation:
Ensuite on réécrit l'url en catégorie/nomdufichier? Ne faudrait-il pas faire quelque chose comme Code :
Pour expliquer ce que j'ai essayé de faire et de récupérer $1 qui devient php et $2 le nom du fichier et donc de créer: php/nomdufichier. Citation:
Après pourquoi pas utiliser un symlink pour générer un lien de téléchargement et un coup de rewriting pour transformer en /downloads/hash Pour le script de téléchargement, j'avais commencé quelque chose comme: page download.php avec download.php?mus=truc.wma Code :
Merci. |
|||||||||
|
|
00
|
|
|
#8 | |
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Citation:
Pour le liens symboliques ça me parait pas nécessaire, il serais plus efficace de stoker les accés en base de donnérs avec une table comme ça par exemple : Comme ça tu vérifie simplement que l'utilisateur à bien les droits pour ce fichier et hop c'est bon, pas besoin de faire un lien différent pour chaque personne. Et surtout pas besoin de coder un script qui va aller supprimer tes liens symboliques (tu serais obligé d'utilisé un cron etc...) Sans parler du fait que tu pourras garder un trace des accès pour déboguer ou faire des stats. Bonne chance |
|
|
00
|
|
|
#9 | |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Enfin j'ai compris.... j'ai compris la théorie rien de plus pour l'instant
Je sens que je vais passer une bonne nuit sur la doc. Citation:
Comment organiser ça? Je pensais à rajouter 1 colonne vidéos demandées dans la table membres. Faire un explode et voir ainsi toutes les vidéos demandées. Exemple: +------------------------------------+ | pseudo | vidéos demandées | +------------------------------------+ | sam1212 |14 19 85 | +------------------------------------+ Par contre pour date_fin etc..., je ne vois pas comment organiser ça. Merci PS: Pour le code que j'ai mis, est-ce bon? |
|
|
|
00
|
|
|
#10 | ||||
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Quand tu à besoin de faire un explode sur un champ de ta base c'est que tu t'y prend mal :p
Dans ton cas créer un table avec une entrée par utilisateur et par vidéo demandée : Code :
Tu n'aura plus qu'a faire une jolie requete pour vérifier les droits : Code SQL :
__________________
|
||||
|
00
|
|
|
#11 | |||||
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Citation:
Par contre pourquoi as-tu rajouté count dans la requête? Merci pour ton aide |
|||||
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Je fait un count comme ça j'ai juste à faire un IF sur le résultat (0 = false, >= 1 = true), mais c'est juste parce que j'aime bien
__________________
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Ok
J'essaye de commencer le script demain et je te tiens au courant S'il te vient une idée, n'hésites pas. Par contre pour le script tu ne m'as pas répondu Merci pour tes réponses. |
|
|
00
|
|
|
#14 | |
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Citation:
__________________
|
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Dernière partie du message: http://www.developpez.net/forums/d11...e/#post6155328
Edit: Est-ce que dans un premier temps dois-je coder en prenant en considération les get dans les url ou dois-je directement faire le htaccess de rewriting? |
|
|
00
|
|
|
#16 |
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Ton script est très bien (d’ailleurs il fait quasiment la même chose que le mien), tu doit juste ajouter ta gestion des droits.
L'url rewriting c'est juste pour faire jolie, en vrai ton script sera appelé via la syntaxe script.php?a=b (la partie de droite dans la RewriteRule du .htaccess). Donc tu code comme si tu n'avais pas d'url rewriting, et tu utilise $_GET.
__________________
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
Ok merci. J'avais vu des tutos avec énormément de header pour forcer le téléchargement. Je me demandais s'il en manquait.
J'essaye de commencer le script assez rapidement. Merci pour ton aide |
|
|
00
|
|
|
#18 |
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Certains headers supplémentaire peuvent être utiles pour gérer le cache (si tu veux faire télécharger des fichiers différents sur la même URL par exemple, il faut désactiver le cache), mais dans ton cas si tu utilise l'url-rewriting pour réécrire l'adresse et en avoir une par fichier, tu ne devrais pas avoir besoin de plus.
__________________
|
|
00
|
|
|
#19 | ||||||
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 75 ![]() |
J'avais bien lu ton message mais je voyais pas trop quoi répondre à part "ok"
Hier, je suis parti à l'assaut et j'ai commencé à faire les 2 pages. Je suis parti sur une page pour télécharger et l'autre pour afficher les pages de présentation. Pour télécharger, normalement tu m'as dit que tout était bon, au cas où je remets le code: pr_dl.php: Code :
Comment retirer ce "uploads_" du nom du fichier? Après pour la création des pages automatiquement, j'ai pensé à un script comme ça: Code :
Mon template.php: Code :
Faut-il donc tout stocker dans la bdd? Ou y'a t-il un moyen plus simple? Ou carrément mon idée est mauvaise pour générer des pages à la volée. Merci pour tes réponses |
||||||
|
|
00
|
|
|
#20 | |||||||
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
[quote=sam1212;6162420]J'avais bien lu ton message mais je voyais pas trop quoi répondre à part "ok"
Hier, je suis parti à l'assaut et j'ai commencé à faire les 2 pages. Je suis parti sur une page pour télécharger et l'autre pour afficher les pages de présentation. Pour télécharger, normalement tu m'as dit que tout était bon, au cas où je remets le code: pr_dl.php: Code :
Comment retirer ce "uploads_" du nom du fichier? [/code] Pour le nom c'est ligne 15 du code au dessus qu'il faut que tu change le nom. Sinon oublie pas de rajouter la partir ou tu vérifie que l'utilisateur à les droits. Citation:
J'ai pas bien compris la relation entre les pages et le fichier, dans tout les cas si tu veux pouvoir ajouter/modifier des pages sans toucher au code, la BDD il n'y à pas mieux. Par-contre pense à au moins mettre ton code de connexion mysql dans un fichier à part que tu ajoute avec un include.
__________________
|
|||||||
|
00
|
Copyright © 2000-2012 - www.developpez.com