Page 1 sur 1

Fonction header

Posté : 29 janv. 2007, 15:06
par Smashou
Bonjour à tous!

J'ai un problème avec la fonction header:
header("Content-Type: application/text"); 
header("Content-disposition: filename=".$nomdufichier.".dat"); 
exit($formatfixe);
Je dois générer un fichier au format fixe ( sa fonctionne ) le contenu est dans $formatfixe.

Ce header me permet de pouvoir "forcer l'enregistrer sous" pour l'utilisateur qui veut le télécharger.

NB: Le fichier au format fixe que je génère ne dois comporter toutes les données que sur une seule ligne sans '\n' ou '\r\n' enfin sans retour à la ligne.

Sa fonctionne sauf que lorsque j'ouvre le fichier généré il contient avant ma ligne de donnée 3 retour à la ligne.
Après vérification ces 3 retour à la ligne ne peuvent que provenir de la fonction header.

Il est obligatoire que le fichier ne contienne aucun retour à la ligne.
Quelqu'un aurait 'il déjà rencontrer ce problème et trouvé une solution?

Merci d'avance pour votre réponse.

PS: j'ai déja testé d'encapsuler la fonction header dans un str_replace pour virer les retour à la ligne mais rien n'y fait.

Posté : 29 janv. 2007, 15:53
par titerm
Il y a une erreur de syntaxe dans ta 2eme ligne avec les guillemets.

Posté : 29 janv. 2007, 15:56
par Smashou
Oui en fait non désolé c'est une mauvaise traduction de mon code le nom du fichier est généré par une variable j'EDIT

Posté : 29 janv. 2007, 18:48
par titerm
Il te manque quand même dans le source généré de la seconde ligne les guillemets autour du nom du fichier.
header('Content-Disposition: attachment; filename="'.$nomdufichier.'.dat"');
Néanmoins, dans ton cas, pour etre sur que ta variable $formatfixe contient bien ce que tu penses, vire les headers temporairement, et fait
echo '---' . $formatfixe . '----';
et assure toi que il n'y a aucun caractère parasite en debut de chaine( juste apres les '---'.

Posté : 30 janv. 2007, 10:23
par Smashou
Pour les guillemets ok mais sa ne change rien !
De plus j'avais déjà testé le contenu de la chaîne elle même et elle ne contient aucun caractère parasite.

Posté : 30 janv. 2007, 13:15
par titerm
Les fonctions header par definition ne génère que des headers, pas du contenu et donc pas de retour a la ligne...
donc soit ton problème se situe dans le contenu de ta variable, soit dans la fonction exit().

Essai de faire un simple echo $formatfixe suivi de return; mais je n'y crois pas trop.

Une dernière chose, ton script php, assure toi bien que tu n'as pas de caractère parasite apres le ?> a la fin. Dailleurs, si il n'y a que du code php, il est fortement conseillé de ne pas metre le ?> final qui est optionnel et qui pose souvent des problèmes de ce type.