Script pour forcer le telechargement
Résolu
neuneu
-
ezstock -
ezstock -
bonjour
je cherche un script php pour forcer le telechargement
pouvez vous me renseigner ?
merci
je cherche un script php pour forcer le telechargement
pouvez vous me renseigner ?
merci
A voir également:
- Script pour forcer le telechargement
- Forcer demarrage pc - Guide
- Telechargement direct - Accueil - Outils
- Forcer la reinitialisation pc - Guide
- Forcer suppression fichier - Guide
- Forcer à quitter - Guide
12 réponses
$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>" ;
...
?>
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>" ;
...
?>
<?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+
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+
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
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
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 ;)
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 ;)
$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 :
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 :
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Allô à vous tous.
J'apporte une précision importante sur un commentaire fait dans cette section. je l'apporte parce que j'ai passé beaucoup de temps à régler quelque chose qui n'a pas été précisé. J'avais besoin de cette info pour un site www.ezstockexchange.com. Donc je vous la donne. Le code de "download" doit non seulement être isolé dans un fichier (ex: download.php) mais ce fichier doit commencer par les balises du php. Pas de <html> avant ou quoique ce soit. Sinon.... le code va quand même fonctionner, excepté que le fichier "downloadé" sera invalide (du moins dans le cas d'un fichier binaire) car l'entête de votre fichier contiendra les premiers caractères insérés avant la balise php... résultat... entête invalide... fichier corrompu ... et invalide. J'ai trouver cela après plusieurs heures de travail... prière :-) et un bon éditeur hexadécimal.
Dès que j'ai enlever les caractères, précédant la balise php tout à fonctionné.
J'ai cherché sur internet du côté anglais et français et nulle part, j'avais l'info. Je la laisse donc au cas où un nouveau passerai par là.
A+
J'apporte une précision importante sur un commentaire fait dans cette section. je l'apporte parce que j'ai passé beaucoup de temps à régler quelque chose qui n'a pas été précisé. J'avais besoin de cette info pour un site www.ezstockexchange.com. Donc je vous la donne. Le code de "download" doit non seulement être isolé dans un fichier (ex: download.php) mais ce fichier doit commencer par les balises du php. Pas de <html> avant ou quoique ce soit. Sinon.... le code va quand même fonctionner, excepté que le fichier "downloadé" sera invalide (du moins dans le cas d'un fichier binaire) car l'entête de votre fichier contiendra les premiers caractères insérés avant la balise php... résultat... entête invalide... fichier corrompu ... et invalide. J'ai trouver cela après plusieurs heures de travail... prière :-) et un bon éditeur hexadécimal.
Dès que j'ai enlever les caractères, précédant la balise php tout à fonctionné.
J'ai cherché sur internet du côté anglais et français et nulle part, j'avais l'info. Je la laisse donc au cas où un nouveau passerai par là.
A+
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");
?>
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");
?>
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 ;)
$chemin = $dir.$filename; doit etre remplacé par :
$chemin = $dir;
oui sinon remplacer $chemin par $dir)
merci beaucoup....je te dois un coup ;)
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 :'(
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.
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.
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);
?>
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);
?>