fOrcer le téléchargement d'un fichier .txt [ PHP ] - Programmation
Marsh Posté le 19-07-2002 à 12:59:55
Lien du genre :
<a href="get.php?fic=toto.txt">Télécharger</a>
et get.php :
<?php
header( "Content-type: application/txt" );
$len = filesize( $_GET["fic"] );
header( "Content-Length: $len" );
header( "Content-Disposition: attachment; filename=" . $_GET["fic"] );
readfile($_GET["fic"]);
?>
Marsh Posté le 19-07-2002 à 13:04:50
Fait gaffe quand même !
Ne recopie pas bêtement ce code !
Vérifie le nom du fichier que tu va envoyer !
Il ne faut pas laisser passer les trucs du genre :
http://www.tonsite.com/get.php?fic=connect.php
Avec connect.php qui contient par exemple un mot de passe de connexion à un base...
Marsh Posté le 19-07-2002 à 13:14:04
oky merci en fait je viens de trouver le tuto ici:
http://www.phpindex.com/trucsetast [...] lement=146
ça ressemble à ce que tu m'as dis en effet.
Bon, voila comment j'ai fais:
ma page ou il ya lien (et ou le .txt ce crée):
Code :
|
ma page download:
Code :
|
bon, le .txt se crée bien et tout mais à l'interieur, au lieu d'avoir les paroles comme prévu et bien j'ai ce message d'erreur:
<br />
<b>Warning</b>: readfile("scriptsphp3/lyrics/Metallica - Nothing else matters.txt" ) - No such file or directory in <b>e:\sites internet\ludo project\scriptsphp3\lyrics\download.php</b> on line <b>4</b><br />
ça veut dire quoi exactement ??
Merci d'avance
Marsh Posté le 19-07-2002 à 13:25:25
Ton script download.php il est dans :
e:\sites internet\ludo project\scriptsphp3\lyrics\download.php
Donc si tu lui donne un nom de fichier comme çà :
scriptsphp3/lyrics/Metallica - Nothing else matters.txt
Il le cherche en relatif, donc il cherche :
e:\sites internet\ludo project\scriptsphp3\lyrics\scriptsphp3/lyrics/Metallica - Nothing else matters.txt
Donc, soit tu met un chemein absolu, soit tu fait gaffe dans tes chemins relatifs !
Ok ?
Et je répète mon avertissement !
Dans download.php, ne fait pas de readfile sans vérifier que le fichier demandé est bien autorisé (par toi) au téléchargement.
Le plus simple, c'est de n'autoriser que les fichiers .txt, dans un répertoire spécial pour çà !
Si tu code en dur le répertoire dans download.php (pourquoi pas!) fait gaffe au petit malin qui demande un fichier du genre ../../../../mon_cv.txt !
IL FAUT ETRE PARANO QUAND ON FAIT DU PHP !
Marsh Posté le 19-07-2002 à 13:48:07
bah voui mais j'ai betement suivi le tuto moi, et ils disent :
$dir= "chemin complet vers le fichier/".$filname;
c'est donc ce que j'ai fais.
et puis je suis un peu debutant en php, dsl je n'ai pas tout compri à ce que tu as dis.
BOn, deja j'ai fais un rep "temp" pour stocker les .txt temporaires ( oui temporaire car je compte effacer le .txt directement apres )
Ensuite, il faut regler les chemins c'est ça ? mais lequel ?
Marsh Posté le 19-07-2002 à 14:11:12
ah ok en fait j'ai mis ça :
$dir = "E:\Sites internet\Ludo project\scriptsphp3/lyrics/temp/$filename";
au lieu de :
$dir = "scriptsphp3/lyrics/$filename";
et ça a l'air de marcher...
Mais comment je ferrai sur le serveur FRee ?????
edit: arf non ça ne marche que sur mon PC
Marsh Posté le 19-07-2002 à 12:07:13
salut,
on va dire que j'ai un fichier .txt stocké sur le serveur.
je voudrai que lorsque je click sur le lien pointant sur ce .txt qu'il se télécharge ( que l'invit de download apparaisse) au lieu qu'il s'ouvre dans l' explorer.
Avez vous une solut ?
Merci d'avance
---------------
Make Portraits, Not War!