Téléchargement au clic multifiles

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Téléchargement au clic multifiles

par Wormblaster » 19 sept. 2006, 16:25

Mon script en 2 pages marche bien mais c'est juste que je voudrais savoir comment se fait cette protection naturelle car je demeure un petit filou.

Pour être plus clair, j'ai sur ma page liste.php ce genre de résultats (en fonction d'un critère c) :
<a href="download.php?id=15">file 15</a>
<a href="download.php?id=27">file 27</a>
...

Ma page download.php, elle, est comme ca :
<? 
include "param.php";
$q="SELECT * FROM files WHERE id='".$_GET["id"]."'";
$r=mysql_query($q);
while($rows=mysql_fetch_array($r)){
$filename = $rows["path"];
}
function download($filename) { 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($filename) ); 
    header('Accept-Ranges: bytes'); 
    header('Content-Length: '.filesize($filename) ); 
    readfile($filename); 
} 
download($filename);
?>
Tout cela marche nickel, mais je me suis dit : si je tappe dans l'url directement http://www.monsite.com/download.php?id=1 je vais avoir accès au document 1 qui normalement ne m'est pas proposé (en admettant que je sois un pirate de bas étage), tu me suis ? Hors là ca me propose (et tant mieux) de télécharger la page download.php, je voulais juste savoir le pourquoi du comment.

Wormblaster

par zeus » 19 sept. 2006, 10:31

Surement parce que le nom de fichier que tu passes à la fonction download est le fichier dowload.php et non pas le fichier que tu voudrais télécharger ;)

Mais sans le code de ton dowload, je ne pourrais pas plus t'aider :oops:

par Wormblaster » 19 sept. 2006, 10:27

Re,

Je préfère pas afficher l'id mais j'ai fait plusieurs tests et voudrais savoir pourquoi quand je mets un download.php?id=20 ca me propose de télécharger le fichier download.php et non pas le fichier dont l'id dans ma base est 20 (à la limite tant mieux mais je serais curieux de savoir ^^)

Wormblaster

par Worm B » 18 sept. 2006, 16:51

C'est bon j'ai réussi grâce à toi merci.

Par contre j'aurai une dernière question. Que peut-on faire au niveau de la sécurité pour pas voir le paramètre dans l'url ou bien fausser celle-ci car ca me donne un download.php?id=1 et moi qui n'est pourtant pas beaucoup de jugeote (si si c'est possible et désolé pour l'hortographe si ce n'est pas la bonne) je me dis que si je mets dans l'url un download.php?id=2 je vais avoir accès à un autre document (peut être secret et personnel à l'origine)

Que préconises-tu ? As-tu une idée d'expert ?

Worm B

par Invité » 18 sept. 2006, 16:31

Non ?

par Wormblaster » 18 sept. 2006, 16:09

Oui mais par contre ca m'oblige a ouvrir une autre page alors que moi je veux rester sur ma liste...

Wormblaster

par zeus » 18 sept. 2006, 15:57

premierement, je te demanderais de soigner un peu ton écriture s'il te plait ;)

Ensuite, cette fonction doit être appellée dans une page qui ne sert qu'a lancer le téléchargement.

Chacun de tes liens doit être un lien vers cette page avec un parametre GET te permettant de savoir quel fichier il faut télécharger. Dans cette page cible, tu récupères le fichier à télécharger et tu lances la fonction dowload sur ce fichier.

par Invité » 18 sept. 2006, 15:40

No problemo jle prends pas mal tkt ;)

J'avais vu votre topic dans la faq (d'ailleurs c'est cool de donner ce genre de tuto) mais comme j'chui noob j'arrive pas à intégrer à mon exemple.

Perso j'ai :

- inséré la fonction dans mon code.
- affecté mon $rows["chemin"] à $filename
- mis dans le a href de chaque ligne produite par le while <a href='download($filename)'...

J'ai faux ? Enfin je sais que j'ai faux puisque ca marche pas lol :roll:

Worm B (la nouvelle spice girl ou destiny's child 8))

par @rthur » 18 sept. 2006, 15:30

Bonjour,

Je n'ai pas compris la question... qu'entends tu par "ouvrir une boite de téléchargement (ouvrir/télécharger/annuler) plutôt que de passer par les fonctionnalités du navigateur"
Tu peux donner un exemple?

par zeus » 18 sept. 2006, 15:27

Bonjour,

Pour ton problème, nous avons une solution toute faite dans la FAQ du forum :
http://www.phpfrance.com/forums/voir_sujet-7700.php

Ce n'est pas pour t'embeter que je dit ça mais recherche avant de poster ;)

Téléchargement au clic multifiles

par Wormblaster » 18 sept. 2006, 15:09

Slt tlm !!!

J'ai une couille dans le potage et voulais savoir commenti qu'chpe faire pour que lorsque je clique sur un lien ou une icône il m'ouvre une boite de téléchargement (ouvrir/télécharger/annuler) plutôt que de passer par les fonctionnalités du navigateur.

Il faut savoir que j'affiche des enregistrements issus d'une base dans laquelle je stocke les chemins de chaque document.

Wormblaster :twisted: