Fonction header

Petit nouveau ! | 3 Messages

29 janv. 2007, 15:06

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.
Modifié en dernier par Smashou le 29 janv. 2007, 15:56, modifié 1 fois.

Mammouth du PHP | 505 Messages

29 janv. 2007, 15:53

Il y a une erreur de syntaxe dans ta 2eme ligne avec les guillemets.

Petit nouveau ! | 3 Messages

29 janv. 2007, 15:56

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

Mammouth du PHP | 505 Messages

29 janv. 2007, 18:48

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 '---'.

Petit nouveau ! | 3 Messages

30 janv. 2007, 10:23

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.

Mammouth du PHP | 505 Messages

30 janv. 2007, 13:15

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.