[PHP][HEADER] Gros Probleme
Résolu
keys69
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
NeoK -
NeoK -
Bonjour a tous
J'ai un probleme tres bizar concernant le forcage d'un telechargement automatique.
Mon probleme est le suivant : Je desire apres qu'un utilisateur ai clique sur un bouton submit, lancer automatiquement un telechargement de fichier dont le nom varie en fonction des choix qu'a fait l'utilisateur avant de cliquer sur ce bouton submit ( le fichier serait cree auparavant )
Apres m'etre renseigne j'ai donc insere les headers avant toute ligne d'html :
Voila ce qui est etrange c'est que quand je clique sur ce fameux bouton j'ai bien une fenetre qui s'ouvre me demandant si je veux telecharger le fichier qui porte le bon nom. Cependant une fois telecharge et ouvert je n'obtient pas du tout le contenu du vrai fichier mais le code html de la page d'ou je viens ( en l'occurence celle qui contient le bouton submit ).
En fait j'ai l'impression que readfile ne va pas chercher le fichier du tout malgres que mon chemin soit exacte ( je n'ai aucune erreur suite a l'execution du code ).
Apres avoir consulte bon nombre de topic j'ai essaye en remplacant le header("Content-type: application/force-download"); , en essayant divers chemin dans mon readfile. De plus, je n'ai aucune ligne blanche dans le fichier telecharge avant tout code html...
Bref je ne trouve rien sur google comparable a mon probleme, si quelqu'un peut m'aider ce serait avec plus grande joie :)
Merci bcp d'avance
ps : dsl pour les accents je bosses sur qwerty :p
EDIT : En fait le fichier telecharger contient bien le contenu de mon fichier mais il concatene ensuite le code HTML de la page d'ou je viens...vraiment bizar :s
J'ai un probleme tres bizar concernant le forcage d'un telechargement automatique.
Mon probleme est le suivant : Je desire apres qu'un utilisateur ai clique sur un bouton submit, lancer automatiquement un telechargement de fichier dont le nom varie en fonction des choix qu'a fait l'utilisateur avant de cliquer sur ce bouton submit ( le fichier serait cree auparavant )
Apres m'etre renseigne j'ai donc insere les headers avant toute ligne d'html :
if(isset($_POST['bouton_submit'])){ // si on a clique sur le bouton submit $nom_fichier=$_SESSION['fichier']; header("Content-type: application/force-download"); header("Content-Disposition:attachment; filename=' ".$nom_fichier." ' "); readfile('C:/wamp/www/login/project/Files/'.$nom_fichier.'); // je travaille en local }
Voila ce qui est etrange c'est que quand je clique sur ce fameux bouton j'ai bien une fenetre qui s'ouvre me demandant si je veux telecharger le fichier qui porte le bon nom. Cependant une fois telecharge et ouvert je n'obtient pas du tout le contenu du vrai fichier mais le code html de la page d'ou je viens ( en l'occurence celle qui contient le bouton submit ).
En fait j'ai l'impression que readfile ne va pas chercher le fichier du tout malgres que mon chemin soit exacte ( je n'ai aucune erreur suite a l'execution du code ).
Apres avoir consulte bon nombre de topic j'ai essaye en remplacant le header("Content-type: application/force-download"); , en essayant divers chemin dans mon readfile. De plus, je n'ai aucune ligne blanche dans le fichier telecharge avant tout code html...
Bref je ne trouve rien sur google comparable a mon probleme, si quelqu'un peut m'aider ce serait avec plus grande joie :)
Merci bcp d'avance
ps : dsl pour les accents je bosses sur qwerty :p
EDIT : En fait le fichier telecharger contient bien le contenu de mon fichier mais il concatene ensuite le code HTML de la page d'ou je viens...vraiment bizar :s
A voir également:
- [PHP][HEADER] Gros Probleme
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- 400 bad request request header or cookie too large - Forum Windows
- Alert php ✓ - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
5 réponses
Salut,
C'est normal que le nom du fichier soit correcte, puisque c'est le premier header qui donne le nom du fichier, qui n'a pas de lien avec le nom du fichier sur le serveur.
Juste deux remarques (et peut-être que ça va marcher ... :D) :
- Avec le " (double quot), les variables sont "executées" : ainsi, tu ne dois pas faire le ' ".$variable." '
- Il y a un problème de ' dans le readfile
Code avec les deux remarques :
Je pense que tu y a pensé, mais t'as bien mis l'extension du fichier dans la variable ?
@Bientôt
C'est normal que le nom du fichier soit correcte, puisque c'est le premier header qui donne le nom du fichier, qui n'a pas de lien avec le nom du fichier sur le serveur.
Juste deux remarques (et peut-être que ça va marcher ... :D) :
- Avec le " (double quot), les variables sont "executées" : ainsi, tu ne dois pas faire le ' ".$variable." '
- Il y a un problème de ' dans le readfile
Code avec les deux remarques :
if(isset($_POST['bouton_submit'])){ // si on a clique sur le bouton submit $nom_fichier=$_SESSION['fichier']; header("Content-type: application/force-download"); header("Content-Disposition:attachment; filename='$nom_fichier' "); readfile('C:/wamp/www/login/project/Files/'.$nom_fichier); // je travaille en local }
Je pense que tu y a pensé, mais t'as bien mis l'extension du fichier dans la variable ?
@Bientôt
Salut, merci davoir pris un peu de temps pour essayer de m'aider mais ce n'est pas un probleme de quote, d'autant plus qu'en remplacant ce que tu ma dis j'obtient un nom de fichier de la forme : ' nom de fichier ' ( avec des quotes autour)
Sinon oui j'inserais bien l'extension.
Voici un autre exemple de mon probleme avec un fichier fixe test.txt qui contient le texte suivant : abcdef
Voici mon code :
Et donc quand jouvre mon fichier telecharger ca me donne ceci :
abcdef
<html xmlns="http://www.w3.org/1999/xhtml">
<head> balises
</head>
<body>
blablalalbalblabla
</body>
</html>
Bref ca concatene quoi en prenant en inserant le contenu du fichier en premier....
Sinon oui j'inserais bien l'extension.
Voici un autre exemple de mon probleme avec un fichier fixe test.txt qui contient le texte suivant : abcdef
Voici mon code :
<?php session_start(); if(isset($_POST['bouton_submit'])){ // si on appuie sur le bouton submit header("Content-type: application/force-download"); header("Content-Disposition:attachment; filename=test.txt "); readfile($_SERVER['DOCUMENT_ROOT'].'login/project/Files/test.txt'); // prend la racine du serveur } ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> balises </head> <body> blablalalbalblabla </body> </html>
Et donc quand jouvre mon fichier telecharger ca me donne ceci :
abcdef
<html xmlns="http://www.w3.org/1999/xhtml">
<head> balises
</head>
<body>
blablalalbalblabla
</body>
</html>
Bref ca concatene quoi en prenant en inserant le contenu du fichier en premier....
Ben ecoute pepe cyril tu viens de resoudre ce qui depuis 2 jours me causes des miseres je te remercies vraiment vraiment bcp :) !!
Le probleme etait en effet un simple exit() a rajouter, je pouvais pas l'inventer lol
Niveau securite la variable de session ne peut pas etre modifier par lutilisateur donc ca ne devrai pas poser de probleme :)
Merci bcp mec !
Le probleme etait en effet un simple exit() a rajouter, je pouvais pas l'inventer lol
Niveau securite la variable de session ne peut pas etre modifier par lutilisateur donc ca ne devrai pas poser de probleme :)
Merci bcp mec !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
A la fin de ta condition il faut mettre un:
pour ne pas avoir la suite de la page html
Pour voir si le fichier existe bien, tu fait un:
et tu regarde si il existe.
Enfin, je sais pas comment est défini ton $_SESSION['fichier'], mais suivant comme tu l'a fait, si l'utilisateur a moyen de changer cette variable (par un formulaire par ex), sache qu'il peut accéder à tout ton disque dur... Fais attention