Problème avec un force File

[Résolu]
Signaler
Messages postés
143
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
2 juin 2008
-
Messages postés
143
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
2 juin 2008
-
Yop

Voila j'explique, je voudrais forcer le téléchargement de fichier
mon fichier source se trouve dans : 'root/conf/dl_file.php'

et le fichier a DL lui se trouve dans :'root/docs/97547.pdf'

et quand je mets le lien pour le télécharger il m'envoi royalement chi.. , il me dis toujours que la source n'existe pas.

Je suis sur ce prob depuis hier soir et ca commence a m'énerver

VOICI LE CODE SOURCE

<?
$down = "../docs/".$_GET[download];
header("Content-disposition: attachment; filename=".$down);
header("Content-Type: application/force-download");
readfile($down);
?>

Merci d'avance

Msn & Mail : Bruno@Pages-Concept.be

10 réponses

Messages postés
143
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
2 juin 2008

Voila g trouvé une source ki fonctionne

<?
$path = '../docs/';
$filename = "$path".$_GET['download'];
$filename = realpath($filename);


$file_extension = strtolower(substr(strrchr($filename,"."),1));


switch ($file_extension) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpe": case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}


if (!file_exists($filename)) {
die("NO FILE HERE");
}


header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename="".basename($filename)."";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($filename));
set_time_limit(0);
@readfile("$filename") or die("File not found.");


?>

Merci quand mm a

Msn & Mail : Bruno@Pages-Concept.be
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello,



primo, on entoure de quotes un index associatif :

$_GET['download']



Ensuite :

- vérifie le contenu de cette variable.

- vérifie que ton '../docs/'.$_GET['download'] pointe bien sur ton fichier.



Enfin, il te manque ce header :



header('Content-type: application/pdf');
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



et tant que t'y es, remplace <? par <?php



ensuite pour vérifier que le fichier existe t'as la fonction file_exists() ou encore is_file()



pour le fichier pense à vérifier que le fichier rentré dans l'url ne
correspond pas à un fichier autre que ceux contenus dans le
dossier docs :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
143
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
2 juin 2008

Alors voila ben ca marche tjs pas... Alors une soluce pr moi??

Se serais sympa

Le fichier EXISTE (g checker ca kan mm chui po nul :p)
le nom du fichier est CORRECT et g changer $_GET[download] en $_GET['download']

Msn & Mail : Bruno@Pages-Concept.be
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Quel est le message exact du navigateur ? ensuite t'as regardé sur ce site les sources de force download ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
143
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
2 juin 2008

oui les source de force download g regarder c la ke g "piké" les codes et il me mets simplement fichier introuvable

J'espere avoir pu t'aider

Msn & Mail : Bruno@Pages-Concept.be
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
C'est que le chemin est incorrect.



Fais

echo "../docs/".$_GET[download];
Messages postés
143
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
2 juin 2008

Déjà essayé et ca me donne le chemin du fichier

J'espere avoir pu t'aider

Msn & Mail : Bruno@Pages-Concept.be
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Le chemin du fichier en relatif par rapport à ta page, là, hein ?

Pour moi, ton script doit-être dans un répertoire parallèle à docs/, on est d'accord ?
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
rajoute un header('Content-length:x'); ou x représente en octets la taille du fichier.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>