Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1703 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  gestion de téléchargement de fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gestion de téléchargement de fichiers

n°1256092
bensti
Posté le 30-11-2005 à 15:59:23  profilanswer
 

J'ai mis en place sur mon site un accès login / pass pour les membres de mon site, cela leur donne l'accès au téléchargement de certains fichiers. Cependant comment procéder pour que mes fichiers ne puissent pas être téléchargés en direct! c'est a dire en tapant le nom du fichier après l'adresse de mon site? Je précise que j'avais mis un accès login / Pass htaccess mais je trouve son utilisation pour ça pas du tout conviviale! Donc j'ai mis un accès php plus sympathique. Merci de votre aide pour la protection de mes fichiers..

mood
Publicité
Posté le 30-11-2005 à 15:59:23  profilanswer
 

n°1256094
masklinn
í dag viðrar vel til loftárása
Posté le 30-11-2005 à 16:00:12  profilanswer
 

Tu passes par un script pour envoyer les fichiers, au lieu de donner directement le lien vers le fichier [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1256215
bensti
Posté le 30-11-2005 à 17:44:51  profilanswer
 

ahah, bonne idée en effet. Déjà je vois pas comment procéder. Mais un lien direct du style: http://monsite.fr/jacj.zip y conduit! Donc potentiellement si le mec tape l'adresse il récupère le fichier non? Merci de ton aide.

n°1256231
dcvlm
Yep
Posté le 30-11-2005 à 18:05:54  profilanswer
 

bensti a écrit :

ahah, bonne idée en effet. Déjà je vois pas comment procéder. Mais un lien direct du style: http://monsite.fr/jacj.zip y conduit! Donc potentiellement si le mec tape l'adresse il récupère le fichier non? Merci de ton aide.


Mettre un htaccess dans le dossier contenant les fichiers a proteger, avec deny from all
Et tu as une page qui gere les autorisations genre  
dl.php?user=dupond&fichier=toto.zip
et en fonction de tes choix d'autorisations, soit

Code :
  1. if($isOK) header("Location: page_erreur.php?reason=desole_pas_le_droit" );
  2. else {
  3. header("Content-type: mettre_le_type_du_fichier); //ou forcer le DL eventuellement
  4. echo file_get_contents("toto.zip" );
  5. }


 
Je fais ca pr les photos des utilisateurs, ca marche bien...
Maintenant si les fichiers sont tres gros, c peut etre pas ce qu'il y a de mieux !!!! En tt cas c simple et sur !!
 :hello:  


---------------
ZZZZzzzzz
n°1256236
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 30-11-2005 à 18:13:03  profilanswer
 

echo readfile, comme ça ça envoie directement vers la sortie (le client quoi) sans passer par une mise en mémoire de variable.

n°1256239
dcvlm
Yep
Posté le 30-11-2005 à 18:23:42  profilanswer
 

The-Shadow a écrit :

echo readfile, comme ça ça envoie directement vers la sortie (le client quoi) sans passer par une mise en mémoire de variable.


Good good  :jap:  
Je viens de tester, resultat similaire... mais si c plus rapide, tant mieux.
 
Readfile c bien, mangez en  :)


---------------
ZZZZzzzzz
n°1256243
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 30-11-2005 à 18:28:58  profilanswer
 

Pour rendre à César ce qui est à César, c'est FlorentG qui m'avait fait découvrir ce petit truc.
http://www.nexen.net/docs/php/anno [...] adfile.php
 
En fait, readfile et file_get_contents, c'est la même fonction sauf que readfile envoie directement sur la sortie standard (navigateur ou écran) alors que file_get_contents stocke dans une chaine puis renvoie avec ton echo.
D'ailleurs, en fait, avec readfile, le echo n'est même pas nécessaire.

n°1256648
bensti
Posté le 01-12-2005 à 10:31:12  profilanswer
 

merci pour votre aide! j'essaie ça dès que possible. je vous tiens au courant pour la fermeture du topic!

n°1256675
omega2
Posté le 01-12-2005 à 10:59:09  profilanswer
 

Ne jamais faire "echo readfile".
Soit on fait un echo de variable ou de retour de fonction soit on envoie directement le contenu dans le navigateur sans rien rajouter (utilisation de readfile) mais on ne fait pas un mauvais mélange des deux.
 
Un "echo readfile" risque de rajouter (j'en suis presque certain mais j'ai jamais pris le risque de tester) la taille du fichier à la fin de l'envoie du contenu du fichier. Il me semble que c'est pas ce qu'est voulut.

n°1256914
bensti
Posté le 01-12-2005 à 15:18:32  profilanswer
 

dcvlm a écrit :

Mettre un htaccess dans le dossier contenant les fichiers a proteger, avec deny from all
Et tu as une page qui gere les autorisations genre  
dl.php?user=dupond&fichier=toto.zip
et en fonction de tes choix d'autorisations, soit

Code :
  1. if($isOK) header("Location: page_erreur.php?reason=desole_pas_le_droit" );
  2. else {
  3. header("Content-type: mettre_le_type_du_fichier); //ou forcer le DL eventuellement
  4. echo file_get_contents("toto.zip" );
  5. }




 
Merci de cette proposition. Cependant, cette formule me renvoie sur le téléchargement de dl.php. La page ou il y a le code. il télécharge le fichier que je veux ya pas de soucis. mais par contre l'extension est php et en plus c'est le nom de la page du script. Je n'arrive de plus pas a utiliser le:
header("Content-type: mettre_le_type_du_fichier);
Merci de votre aide

mood
Publicité
Posté le 01-12-2005 à 15:18:32  profilanswer
 

n°1256940
dcvlm
Yep
Posté le 01-12-2005 à 15:41:22  profilanswer
 

bensti a écrit :

Merci de cette proposition. Cependant, cette formule me renvoie sur le téléchargement de dl.php. La page ou il y a le code. il télécharge le fichier que je veux ya pas de soucis. mais par contre l'extension est php et en plus c'est le nom de la page du script. Je n'arrive de plus pas a utiliser le:
header("Content-type: mettre_le_type_du_fichier);
Merci de votre aide


C'est justement les headers HTML qui permettent de definir tout ca  
http://ie2.php.net/manual/en/function.header.php
Je te copie colle ce qu'il te faut exactement :

Code :
  1. <?php
  2. // We'll be outputting a PDF
  3. header('Content-type: application/pdf');
  4. // It will be called downloaded.pdf
  5. header('Content-Disposition: attachment; filename="downloaded.pdf"');
  6. // The PDF source is in original.pdf
  7. readfile('original.pdf');
  8. ?>


J'avais eu la flemme de chercher la premiere fois....   :) :D Toi aussi  :D


---------------
ZZZZzzzzz
n°1257015
bensti
Posté le 01-12-2005 à 17:05:41  profilanswer
 

merci à toi! en effet j'avais trouvé par moi meme la ligne:  
header('Content-Disposition: attachment; filename="downloaded.pdf"');
 
mais je ne voyais pas son utilité!

n°1257049
bensti
Posté le 01-12-2005 à 17:54:54  profilanswer
 

voici pour les autre mon script:
 $iddl = mon fichier //GET quelque chose ou URL directe. Attention pas de lecture de SQL avant header!
 $iddl2= str_replace(" ", "_", $iddl); // ça fait pas de mal header supporte mal les espaces
 header('Content-type: application/wav');
 header('Content-Disposition: attachment; filename='.$iddl2);
 readfile("mesfichiers/$iddl" );


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  gestion de téléchargement de fichiers

 

Sujets relatifs
Envoyer des fichiers sur un FTP depuis un programme Java...Soft de gestion d'un développement
Macro : ouverture de fichiers dans un répertoireLien de téléchargement en fonction de la date ?
[TCP] Perte de donnée lors d'un transfert de fichiersEnregistrer automatiquement des fichiers téléchargés
gestion de slangues[VBS - RESOLU] Recherche recursive de fichiers avec caracteres généric
PB gestion de classe alimentation liste deroulante par requette sql[EXCEL] Gestion d'une centaine d'onglet.
Plus de sujets relatifs à : gestion de téléchargement de fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR