Forcer téléchargement d'un fichier

Résolu
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   -  
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite forcer le téléchargement d'un fichier sur mon site.
J'ai ma page de téléchargement qui est dans le dossier "pages" et quand on fait précédent et quand on va dans le dossier "documents" bah là il y a tout les documents à télécharger.
Dans le dossier documents j'ai aussi mis telechargement.php qui contient :
<?
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=$pdf");
readfile($pdf);
?>
Et dans mes liens je fais :
<a href="../documents/telechargement.php?pdf=../documents/LeNigaudFarceur.pdf">La pièce</a>
<br>
Je ne comprends pas pourquoi ça ne marche pas.

Merci beaucoup pour l'aide. Je n'ai jamais fait de PHP, je m'aide du net.
A voir également:

24 réponses

Utilisateur anonyme
 
Bonjour

Si tu as une vieille config de PHP, ça devrait marcher comme ça.
Si tu as une version 5, tu devrais utiliser <?php au lieu de <? comme balise ouvrante de php, et filename=$_GET['pdf'] au lieu de filename=$pdf

As-tu essayé de taper directement http://tonsite/documents/LeNigaudFarceur.pdf pour voir ce qui se passe ?
0
Utilisateur anonyme
 
et il faut peut être des guillemets autour du nom de fichier
header("Content-Disposition: attachment; filename='$_GET[pdf]'"); 

(attention, pour mettre $_GET['pdf'] dans une chaîne entre ", il ne faut pas mettre de ' autour de pdf)
0
skymax406 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   24
 
header('Content-Disposition: attachment; filename=\''.$_GET[pdf].'\'');
0
skymax406 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   24
 
Pour être sure sinon c'est exactement pareil que ce que t'a donner le_pére
0
Utilisateur anonyme
 
Pour être sûr de quoi ?
S'il y a une erreur dans ma syntaxe, explique-moi où.
S'il n'y en a pas, à quoi bon ton intervention ?

Moi je peux expliquer où il y en a une dans ta syntaxe "pour être sûr"
Tu as oublié les ' autour de pdf dans $_GET['pdf'] - qui n'est pas entre " dans ta manière d'écrire.
0
skymax406 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   24
 
Reli bien c'est pas des " mais des double ' et avec un \ devant a certain moment
J'ai pas dit qu'il y avais une erreur c'est une autre façon de l'écrire.
Pas besoin de s'énerver !
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
En fait, je travaille sur des Frameset alors quand je ne mets pas la page telechargement.php et bah ce qu'il se passe c'est que le PDF s'ouvre carrément sur la page.

Alors si je comprends bien, c'est ça le code maintenant dans la page de téléchargement PHP ? :
<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename='$_GET[pdf]'");
readfile($pdf);
?>
0
Utilisateur anonyme
 
readfile($pdf); doit aussi être changé en readfile($_GET['pdf']);
Toujours sous réserve que ta version de PHP ne soit pas trop ancienne.
Si dans ta version , tu as register_globals à off, alors ça aurait déjà dû marcher. Si register_globals est on, alors il faut faire comme je te l'ai indiqué.
Un peu d'information sur le sujet dans la doc PHP :
https://www.php.net/manual/fr/security.globals.php
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename='$_GET[pdf]'");
readfile($_GET['pdf']);
?>

Ça ne fonctionne toujours pas !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
skymax406 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   24
 
On peu peut être voir le probléme sous un angle différent.
Dans ton dossier document je présume que tu a une liste des documents à télécharger et quand tu clique sur l'un d'entre un tu voudrais faire appel a la page téléchargement avec en paramètre le lien vers le fichier à télécharger c'est sa ?
0
skymax406 Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   24
 
A vérifier, mais je pense que en forçant la piece jointe il y ai moyen qu'on télécharge tes pages php.
Faut voir psk je sais pas si quand on les télécharge comme sa elle sont executée d'abord par le serveur ou pas.
0
Utilisateur anonyme
 
Quelle version de php as-tu ?
Comment est register_globals ?
0
Utilisateur anonyme
 
Je viens d'essayer :
<?php 
header("Content-type: application/pdf"); 
header("Content-Disposition: attachment; filename='$_GET[pdf]'"); 
readfile($_GET['pdf']); 
?>
chez moi et ça marche très bien.
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
Et le lien c'est bien ça à faire ?
<a href="../documents/telechargement.php?pdf=../documents/LeNigaudFarceur.pdf">La pièce</a>

Avec ../documents/telechargement.php l'adresse de la page PHP et ../documents/LeNigaudFarceur.pdf l'adresse de mon pdf.

C'est cela ? Car chez moi ça ne marche pas il veut que je télécharge le telechargement.php

Comment savoir ma version PHP ?
Comment savoir comment est register_globals ? Et c'est quoi ça ?
0
Utilisateur anonyme
 
Puisque LeNigaudFarceur.pdf et telechargement.pdf sont dans le même dossier, tu n'as pas besoin d'indiquer de dossier pour LeNigaudFarceur.pdf :
<a href="../documents/telechargement.php?pdf=LeNigaudFarceur.pdf">La pièce</a> (mais ça ne devrait pas changer grand chose)

Es-tu sûr d'ailleurs que ton chemin ../documents est bien le bon par rapport à la page qui contient ce lien ?
Pour en être sûr de chez sûr, remplace provisoirement le code de ton script telechargement.php par un simple 'coucou'.
Qu'est-ce qui se passe quand tu cliques sur ton lien ? Dans la version avec 'coucou', et dans la version avec le script de téléchargement ?
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
Coucou ou pas coucou il me fait télécharger la page telechargement.php
0
Utilisateur anonyme
 
Il y a un malaise là...
Qu'est-ce que ça veut dire "il me fait télécharger la page telechargement.php" ?
Normalement, cliquer sur le lien provoque l'exécution du script telechargement.php. Dans la version 'coucou', ça devrait afficher 'coucou' et dans la version avec le script de téléchargement, çà devrait te proposer d'enregistrer ton fichier pdf.
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
Qu'est-ce que ça veut dire "il me fait télécharger la page telechargement.php" ?

Capture écran : http://hpics.li/0fd7858

Et voilà qui devrait vous aider à m'aider : http://hpics.li/1c4882b
0
Utilisateur anonyme
 
Effectivement, tu l'avais pourtant bien dit, c'est moi qui n'avais pas imaginé que c'était possible.

Ben voilà, tout s'explique...
En fait, tu ne passes pas par un serveur Web. Ta page pieces.html n'est pas traitée comme une page web (http://) , mais comme un simple fichier (file://). Le lien blablabla.php qu'il y a dedans subit le même sort : il est traité comme un fichier, qu'on essaye donc de télécharger parce que ce n'est pas un fichier html. Alors qu'un serveur aurait vu qu'il fallait l'interpréter comme un script php.

As-tu installé quelque chose (easyphp, wamp...) comme serveur sur ta machine ?
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
Bonjour,

J'ai même tenté de l'héberger (quand même) mais rien à faire.
Je ne PENSE pas avoir installé un truc style serveur sur mon ordinateur.
Tous les Internautes qui vont sur mon site ont le même problème que moi, je ne suis pas le seul...
0
Utilisateur anonyme
 
Tu as raison, c'est un autre problème. Le comportement est différent quand on ne passe pas par un serveur.
Tu n'as pas installé de serveur sur ton PC, alors peux-tu donner l'adresse de ton site pour que je puisse voir s'il n'y a pas quelque chose d'autre ?
Autre chose que je trouve bizarre : tu n'as pas de serveur, donc tu n'as jamais travaillé en local, pourtant, dans ta capture d'écran montrant la fenêtre de téléchargement, on voit bien que le nom de fichier est un nom local, pas une url. Ce n'est pas cohérent.
Enfin, chaque chose en son temps, si tu pouvais commencer par une donner un lien où je peux constater le phénomène.
0
Utilisateur anonyme
 
Peux-tu donner aussi le code complet de la page pièces.html ?
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
Je vous ai envoyé le lien par mp, c'est dans pièces de théâtre.

Le nom de la page est très étrange car c'est une page privée, il y a une zone sécurisée et je vous ai donné le lien qui permet d'y accéder sans s'identifier.

Voilà le contenu de pieces.html :

<HTML>
<HEAD>
<TITLE>Lisez-moi</TITLE>
</HEAD>
<br>
<h1 align="center">Mes pièces de théâtre</h1><br><br>
CETTE ZONE EST ENCORE EN CONSTRUCTION. SOYEZ PATIENT ET DÉSOLÉ<br><br>

Nom de la pièce : Le Nigaud Farceur<br>
Année de rédaction : 2009<br>
État actuel : Terminé<br>
Téléchargements :<br><a href="../documents/telechargement.php?pdf=LeNigaudFarceur.pdf">La pièce</a> <a href="../documents/LeNigaudFarceurBonus.mp3">Le Bonus</a>
<br>
<BODY><BODY BACKGROUND="../images/droite.jpg">
</BODY>
</HTML>

J'effacerai ensuite ce code car du coup les gens peuvent télécharger là quand ils veulent...
0
Utilisateur anonyme
 
Remarques : ta balise <body> devrait être immédiatement après <head> - et tu ne dois pas avoir deux balises body : avec et sans background.
Tu peux corriger ça mais ça m'étonnerait que ça change quoi que ce soit.
Pour essais, peux-tu ramener ton pdf et le script telecharger.php dans le répertoire pages (avec l'ajustement d'url qui va avec). Il y a un truc bizarre, sans doute du côté de ton hébergeur qui refuse d'exécuter des scripts situés dans 'documents' mais je ne suis absolument pas sûr de cette hypothèse.
Je pars jusqu'à demain, bon courage :)
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
Bonsoir,

Je viens de le faire, ce n'est pas ça. Vous pouvez regarder sur l'adresse que je vous ai envoyé par mp vous verrez...
0
Utilisateur anonyme
 
As-tu déjà fait marcher quoi que ce soit en php chez cet hébergeur ? Es-tu sûr qu'il gère php ?
Si tu n'as jamais rien fait en php, fais un petit script (un simple echo) pour voir que ça marche.
0
Étienne9 Messages postés 1022 Date d'inscription   Statut Membre Dernière intervention   49
 
Bonjour,

Je n'ai jamais fait de PHP.
Je ne sais pas du tout si Voila gère le php en site mode expérimenté.

Apparemment il ne reconnait pas le PHP.
0
Utilisateur anonyme
 
Je ne sais pas du tout si Voila gère le php en site mode expérimenté.
Et tu n'as pas eu l'idée de vérifier ?
3 minutes de recherche. Je n'ai rien trouvé sur le mode expérimenté, mais sur l'offre confirmé :
https://www.118712.fr/sortir.html#5
0