1

Je me suis fait une page de type download.php?id=tagadatsointsoin, et j'ai placé mes headers comme dans le code suivant :
header("Content-Transfer-Encoding: none");
header("Content-Type: " . $MIMEType . '; name="' . $data1 . '"');
header('Content-Disposition: attachment; filename="' . $data2 . '"');
header("Location: ../files/" . $data3);

Plusieurs questions.
[ul][li]Lesquelles parmi les variables $data1, $data2 et $data3 doivent être identiques, s'il y en a ?[/li]
[li]Laquelle parmi $data1, $data2, $data3 contient le nom par défaut du fichier que le clien enregistre ?[/li]
[li]Dans quel ordre ces informations devraient normalement être envoyées ?[/li][/ul]
(Simple curiosité de ma part, je ne connaît pas vraiment le http en tant que protocole, mais si l'ordre ici est faux, je changerai, juste pour avoir de quoi m'en souvenir)
avatar
Je sais qu'il y a marqué "con" sur ma gueule. Je suis né comme ça, je m'y fais. Mais pourquoi toutes les filles qui me plaisent se sentent obligées de rajouter le suffixe "-fident" ?

2

Il y a un truc curieux dans ton code, mais avant ça voilà des réponses à quelques-unes de tes questions :
[ul][li]Pourquoi veux-tu préciser le nom du fichier dans Content-Type ? Tu n'as besoin d'indiquer que le type MIME et éventuellement le charset ici, donc $data1 est inutile[/li]
[li]Pour $data2 (qui lui est bien placé), attention à bien échapper la chaine (avec ton code actuel, ça risque de bugger si un fichier contient des guillemets)[/li]
[li]C'est $data2 qui contient le nom par défaut du fichier (celui proposé à l'utilisateur au moment d'enregistrer le fichier)[/li]
[li]Les "informations" (headers HTTP) peuvent être envoyées dans n'importe quel ordre, ça n'a pas d'importance[/li][/ul]Je reviens sur la dernière ligne, ton "Location:". Ce header est une redirection, et va demander au navigateur de se déplacer vers une nouvelle adresse (celle indiquée par ta variable $data3). Tous les headers que tu as définis avant sont donc inutiles : ils caractérisent le contenu qui est censé suivre mais tu n'en envoies aucun et tu fais une redirection à la place. Ce sont les headers envoyés à la nouvelle adresse ($data3) qui vont être pris en compte (en l'occurrence, probablement les headers que ton serveur web va envoyer par défaut). Ta solution présente un autre problème : elle laisse apparaître à l'utilisateur le "vrai" lien vers le fichier ($data3).

Il me semble que tu devrais plutôt regarder du coté de la fonction "readfile", pour envoyer le contenu du fichier ($data3) au navigateur mais sans effectuer de redirection et donc en conservant les paramètres que tu as spécifié avec tes headers. Il te manquera aussi un header Content-Length qui indique la quantité de données que tu vas envoyer (c'est à dire la taille de ton fichier) et éventuellement un Content-Transfer-Encoding pour indiquer que tu envoies des données binaires.

Dernière précision : sur yAronet comme en HTML, il faut mettre des [ul] autour des [li], sinon ça s'affiche n'importe comment ^^ (comme ça on peut terminer par une petite blagounette : "il manque ul dans ton li", merci Nil tongue)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

En fait, il s'agit de code que j'ai récupéré sur un forum (grin), j'ai pas plus analysé ce que ça allait faire, la solution marchait pour la personne qui demandait de l'aide.
Donc, si je comprends bien, je n'ai besoin que de Content-Disposition: attachment; filename=[nom pour l'enregistrement], Content-Type: $MIMEType, Content-Transfert-Encoding: [je laisse "none"?], et il me faut ajouter un Content-Length: [nombre de bytes] et un readfile($fileName)

Merci Zephyr

Edit de ./1 (j'avais essayé avec [ol], mais les puces s'affichaient comme dans [ul], alors… )
avatar
Je sais qu'il y a marqué "con" sur ma gueule. Je suis né comme ça, je m'y fais. Mais pourquoi toutes les filles qui me plaisent se sentent obligées de rajouter le suffixe "-fident" ?

4

utilise "binary" pour le transfert-encoding, ça marchera dans tous les cas, et pour le reste ça devrait marcher
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

D'accord, merci
avatar
Je sais qu'il y a marqué "con" sur ma gueule. Je suis né comme ça, je m'y fais. Mais pourquoi toutes les filles qui me plaisent se sentent obligées de rajouter le suffixe "-fident" ?