forcer téléchargement sur un lien

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

forcer téléchargement sur un lien

Message par ECO »

bonjour à tous,

j'ai essayer de forcer le telechargement sur des liens pointant vers des documents Office, mais rien ne marche, ca me telecharge mon script :roll:

mon lien

Code : Tout sélectionner

<?php
// Test du téléchargement d'un fichier avec reconnaissance du type de fichier
echo "<a href=\"telecharger.php?file=texte.txt&chemin=\">Télécharger</a>";
?>
"mon" script

Code : Tout sélectionner

<?php
// on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions
switch(strrchr(basename($file), ".")) {
case ".gz": $type = "application/x-gzip"; break;
case ".tgz": $type = "application/x-gzip"; break;
case ".zip": $type = "application/zip"; break;
case ".pdf": $type = "application/pdf"; break;
case ".png": $type = "image/png"; break;
case ".gif": $type = "image/gif"; break;
case ".jpg": $type = "image/jpeg"; break;
case ".txt": $type = "text/plain"; break;
case ".htm": $type = "text/html"; break;
case ".html": $type = "text/html"; break;
default: $type = "application/octet-stream"; break;
}
header("Content-disposition: attachment; filename=$Fichier_a_telecharger");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: $type\n"); // Surtout ne pas enlever le \n
header("Content-Length: ".filesize($chemin.$file));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile($chemin.$file);
?>

j'ai zoné les différents forum mais aucune soluce ne marche

à l'aide
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Comment ça ça te télécharge ton script... ? Tu as un exemple en ligne, je ne vois pas trop... :?
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message par ECO »

pas d'exemple (intranet) - sry :?

quand je clique sur le lien ca m'ouvre la boite de dialogue de telechargement (avec ouvrir - telecharger - annuler) ça me propose de telecharger mon fichier contenant le script avec les "header machin chose" mais pas le fichier voulu (texte.txt)

c'est plus clair ??
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message par ECO »

un peu plus de détails

2 fichiers
- 1 contenant le lien (ma page.php)
- 1 contenant le script (telecharger.php)


ça me telecharge "telecharger.php" et pas "texte.txt"

là c'est plus clair je crois
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Oui, et le fichier est vide c'est ça ? Ou il contient des messages d'erreur ? Si oui lesquels ?

Pour le fait que le nom "telecharger.php" c'est normal, vu que c'est le nom du lien, et que tu ne fais pas une redirection mais que tu inclus simplement un autre fichier dans ce download.php. Le navigateur n'a aucun moyen de savoir que tu incluais le fichier texte.txt, vu que tu le fais sur le serveur via un readfile...
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message par ECO »

non non, il me telecharge bien "telecharger.php" ; ça m'ouvre Dream...
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Le script en clair ? :shock:
Tu es sur de bien avoir php sur ton serveur ? Fait une page phpinfo.php et mets-y le code

Code : Tout sélectionner

<?php phpinfo(); ?>
(je crois)... pour voir.
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message par ECO »

php - oui bien sur, d'autre script tourne très bien

PHP Version 4.3.3

tu crois que ça peut venir de la config (c'est celle par défaut sur easyphp)
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Il a bien l'air dans le même répertoire... l'ouverture est bien <?php... et le script qui se télécharge est absolument inchangé à la virgule près ?

Je n'ai jamais eu de problèmes avec easyphp :roll: mais si le code n'est pas interprété du tout, alors oui il doit y avoir un problème :?
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message par ECO »

je viens juste de voirça ; ça le telecharge mai le fichier est vide, pas la moindre ligne de texte.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Ah ben pourquoi ne l'as-tu pas dit plutôt ? J'avais demandé si le fichier téléchargé était vide :wink:
Bon, donc le code php est interprété mais il ne se passe rien. Aucun message d'erreur ?

Essaye de mettre

Code : Tout sélectionner

error_reporting(E_ALL);
tout au début du script, afin qu'il reporte toutes les erreurs et qu'on puisse savoir où elle se trouve (genre : fichier inexistant, mauvais chemin, erreur de syntaxe...)
Invité

Message par Invité »

Juste pour la forme, tu utilises quelque chose de la forme : include($POST['file']) ? Ce serait pas une faille de sécurité, ça ?
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message par ECO »

pas du tout, tout le code est dans mon premier message
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Tu as essayé pour afficher toutes les erreurs/avertissements/notices comme je t'ai dit ?
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message par ECO »

ouai je viens d'essayé, mais pas de rapport d'erreur
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités