Rechercher : dans
Par :

Script pour forcer le telechargement

Dernière réponse le 30 sep 2009 à 00:41:56 neuneu, le 27 mai 2003 à 12:03:48 
 Signaler ce message aux modérateurs

Bonjour
je cherche un script php pour forcer le telechargement
pouvez vous me renseigner ?
merci

1

Bill_Tcherno, le 27 mai 2003 à 13:23:39

Voici :

Dans La_page_du_lien.php :
<?php
...
$filname = "nom_du_fichier_a_telecharger" ;
$acces = "download.php?" ; (a modifier pour les pseudoframes)
$fdir = "nom_du_dossier_ou_se_trouve_le_fichier/" ; (na pas oublier le / a la fin)
$dir= $fdir.$filname;

print "<a href='".$access."dir=$dir&filname=$filname'>Télécharger !!!</a>" ;
...
?>

Dans download.php :
<?php
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");
readfile("$chemin");
?>

Répondre à Bill_Tcherno

2

Bill_Tcherno, le 27 mai 2003 à 13:24:22

Fait gaffe aux fautes d'orthographe dans mes variables

Répondre à Bill_Tcherno

3

neuneu, le 27 mai 2003 à 13:33:07

Bah en faiot g deja testé ce script mais bon g u un probleme:
il me fait telecharger download.php car il me dit ke readfile ne contient rien....d ailleur c koi ta variable $chemin ??

voila si tu pouvais m eclairer ca serait bien sympa ma fois

merci bien

++

Répondre à neuneu

4

Bill_Tcherno, le 27 mai 2003 à 13:36:37

Bah ce sont des variables que tu doit configurer si tu veut que ca marche sur ton site,

$chemin ca peut etre par exemple
$chemin = "index.php?page=download.php&" ;

ou alors
$chemin = "un_certain_dossier/download.php?" ;

je crois que tu as besoin de la 2 eme solution !

Répondre à Bill_Tcherno

5

neuneu, le 27 mai 2003 à 14:29:39

C pas possible je suis un vrai neuneu moi...ca ne marche pas

donc je rexplique pour voir si tu vois d'ou peut venir mon erreur:

le fichier texte ke je veux telecharger se trouve ds le repertoire archive ainsi ke ma page download.php

sur la page ou se trouve le lien permettant le telechargement
g ca:

<?
...
$fichier01=fopen("archive/$val.txt","w+");
...
$filname = "$a.txt" ;
$acces = "archive/download.php?" ;
$fdir = "archive/" ;
$dir= $fdir.$filname;

print "<a href='".$acces."dir=$dir&filname=$filname'>Télécharger !!!</a>" ;
...
fclose($fichier01);
?>


et au niveau de ma page download.php g ca:

<?php
$chemin="archive/download.php?";
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");
readfile("$chemin");

?>

le message d'erreur ki me met est le suivant:

readfile("archive/download.php?") - No such file or directory in e:\easyphp\www\ping\archive\download.php on line 5

voila...merci encore ;)

Répondre à neuneu

6

Bill_Tcherno, le 27 mai 2003 à 14:46:33

$fichier = "$a.txt" ; est tu sur de ca ? que contient $a ? etais ce a.txt ?

bon en fait on va reprendre calmement ca va etre mieux comme ca :

download.php : (ne rien modifier ou ajouter)
<?
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$filename);
readfile($chemin.$filename);
?>



dans le fichier du lien :

Répondre à Bill_Tcherno

7

Bill_Tcherno, le 27 mai 2003 à 14:49:26
  • +1

$fichier = "$a.txt" ; est tu sur de ca ? que contient $a ? etais ce a.txt ?

bon en fait on va reprendre calmement ca va etre mieux comme ca :

download.php : (ne rien modifier ou ajouter)
<?
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$filename);
readfile($chemin.$filename);
?>



dans le fichier du lien :
...

$filename = "nom du fichier à telecharger";
$dir = "chemin complet vers le fichier/" ;
$chemin = $dir.$filename;

...
print "<a href='download.php?chemin=$chemin&filename=$filename'>download</a>" ;

...
?>

Répondre à Bill_Tcherno

8

neuneu, le 27 mai 2003 à 15:36:30

Merci c bon ca marche (y a une tite modif a faire kan meme au niveau de ce ke tu m as donné :

$chemin = $dir.$filename; doit etre remplacé par :
$chemin = $dir;

oui sinon remplacer $chemin par $dir)

merci beaucoup....je te dois un coup ;)

Répondre à neuneu

9

Bill_Tcherno, le 27 mai 2003 à 15:41:24

Désolé g eu un peu de mal :s je doit reflechir a plein de trucs a la fois et voila c'est la foire ca marche jamais du 1er coup :'(

Répondre à Bill_Tcherno

10

yahya, le 29 mai 2003 à 12:02:01

J'ai un site scolaire, les eleves doivent faire un examen ,
et les cours sont sur leurs disqes locaux.
Je voudrais un script qui peut verouiller tous les fenaitres lors
de l'activation de l'examen.

Répondre à yahya

12

batmat, le 29 mai 2003 à 15:25:40

J'aurais tendance à répondre que c'est impossible...
@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?

Répondre à batmat

11

ipl, le 29 mai 2003 à 12:18:07
  • +1

Félicitations Bill_Tcherno ! ;-)

@12C4 ... In medio stat virtus ...
Ipl

Répondre à ipl

13

Moi, le 30 oct 2003 à 23:20:28

Que d'erreur da,s ce script proposé

c'est affligeant

Répondre à Moi

14

stef68, le 3 aoû 2008 à 03:34:37

Exemple pour mon code qui fonctionne bien lui :

dans la page du fichier à télécharger ( une image dans mon exemple):

<?php

$filename = "votrefichier.jpg";
$dir = "http://www.votredomaine/dossier/images/" ;
$chemin = $dir;
print "<a href='download.php?chemin=$chemin&filename=$filename'><p align='center'><span style='font-size:9pt;'><font face='Verdana' color='white'>
Cliquez ici pour enregistrer l'image</font></span></p></a>" ;

?>



dans le download.php (ne rien modifier - le fichier download.php se trouve a la meme racine que la page précédente) :

<?
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=".$filename);
readfile($chemin.$filename);
?>

Répondre à stef68

15

rn, le 2 mar 2009 à 10:18:45

Idiot tu as oublie de recuperer les parametres avec $_GET[''] !

Répondre à rn

16

rn, le 2 mar 2009 à 10:18:37

Idiot tu as oublie de recuperer les parametres avec $_GET[''] !

Répondre à rn

17

rn, le 2 mar 2009 à 10:20:36

Idiot tu as oublie de recuperer les parametres avec $_GET[''] !

Répondre à rn

18

sylvafilms, le 7 sep 2009 à 00:28:29

<?php

if (!empty ($_GET ["download"]) and !empty ($_GET ["download_dir"]) and !empty ($_GET ["download_file"]) and file_exists ($_GET ["download_dir"].$_GET ["download_file"]))
{
header ("Content-type: application/force-download");
header ("Content-Disposition: attachment; filename=".$_GET ["download_file"]);
readfile ($_GET ["download_dir"].$_GET ["download_file"]);
}

$download_file = "image.jpg";
$download_dir = "./";
echo "<a href=index.php?download=true&download_dir=".$download_dir."&download_file=".$download_file.">image</a>";

?>


J'ai clarifié votre truc.
Tu créé un index.php avec le code ci dessus dedant, tu met dans cet exemple une image.jpg à coté du index.php.
Ce code vérifie que les variables existent bien et que le fichier existe, c'est quand meme 100 fois plus propre et sécure que vos choses mal codées.

Et puis toi qui me lis si jamais tu débute, car moi aussi j'ai débuté comme tout le monde, n'oubli pas de faire marcher un serveur pour lire ton fichier index.php, il te faudra le logiciel easy php par exemple.

a+

Répondre à sylvafilms

19

 sdm, le 30 sep 2009 à 00:41:56

Salut,

Ce système peut être très dangereux si un vilain hacker vient à passer sur votre site.
S'il s'amuse taper une url trafiquée dans son navigateur, du style :
votresite.com/download.php?download=true&download_dir=./&download_file=index.php

il téléchargera tout tranquillement le fichier index.php
Et si ce fichier contient les paramètres d'accès mySQL par exemple, attention aux surprises.
Ou même si le fichier contenant les paramètres d'accès mySQL est stocké ailleurs et qu'il y a, par ex., un include ou require("connection_mysql/connect.php") dans ce fichier index.php, le plaisantin pourra s'amuser à taper
votresite.com/download.php?download=true&download_dir=connection_mysql/&download_file=connect.php
pour avoir accès à tout ce qui lui faut.
Je viens de tester et j'ai enregistré comme cela le fichier php sur mon disque dur...

Je conseillerais donc, si on connaît le type de fichier à télécharger, de plomber le truc avec une vérification de l'extension du fichier à télécharger, du genre :
if (substr($_GET["download_file"], -4) == ".jpg") {
// traitement
}
else {
echo "Type de fichier invalide";
}

ou même interdire toute extension ".php" dans la condition si on veut ratisser plus large et autoriser différents types de fichiers en téléchargement (jpg + gif + png + doc + pdf + xls... etc).

Merci de nous signaler si vous voyez d'autres failles de sécurité dans ce traitement.

Stéphane

Répondre à sdm
Collection CommentÇaMarche.net