[Résolu] Php, retour à une page de confirm + encodage mail

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Nicosmos
Iguane
Messages : 633
Inscription : 20 août 2005, 14:17

[Résolu] Php, retour à une page de confirm + encodage mail

Message par Nicosmos »

Salut, tant qu'on y est, un deuxième petit problème :)
J'ai fait un formulaire qui envoi des mails, et puis qui redirige vers une page qui confirme l'envoi. J'ai utilisé header, juste après mail. La fonction header est utilisé comme ça :

Code : Tout sélectionner

header("location: page-de-confirm.html");
Je ne sais pas si header est le mieux pour faire ça, en tout cas j'ai trouvé cette fonction à plusieurs reprises sur des tutos :P ... Tout a bien fonctionné la première fois, par contre, maintenant, bien que je reçoive bel et bien le mail, j'ai toujours un message d'erreur qui s'affiche et qui est du à la fonction header :

Code : Tout sélectionner

Warning: Cannot modify header information - headers already sent by (output started at /-chemin-vers-la-page-/mail.php:1) in /-chemin-vers-la-page-/mail.php on line 8
Voilà le code en entier :

Code : Tout sélectionner

<?php
$pour= "adresse@mail";
$entete= "Reply-To: $Mail";
$entete = "From: $Nom <$Mail>";
$sujet= "Contact";
$contenu= "De : $Nom \nAdresse : $Mail \nMessage : $Message";
mail($pour, $sujet, $contenu, $entete);
header("location: page-de-confirm.html");
?>
Je précise que le tout est herbergé chez Free ... est-ce que ça ne viendrait pas de lui ? :?

Merci,
Nico :)
Dernière modification par Nicosmos le 25 avr. 2008, 18:10, modifié 2 fois.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Tu es sûr qu'il n'y a pas un blanc avant l'ouverture de ta balise

Code : Tout sélectionner

<?php
?
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

ou bien un BOM en utf-8 ? Typiquement, des données ont déjà été écrites, et envoyées au navigateur, donc les entêtes sont terminées, donc forcément tu ne peux plus les modifier...
Nicosmos
Iguane
Messages : 633
Inscription : 20 août 2005, 14:17

Message par Nicosmos »

A priori, le problème était que le fichier était encodé en UTF-8 ... C'est bizarre que ça ne marche pas dans cet encodage ... je continue à faire quelques tests avant de mettre en résolu :)

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9b5) Gecko/2008032619 Firefox/3.0b5
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

Tu devais alors avoir un BOM comme l'a intuité Calimo.

Il faudra que tu règles ton éditeur pour ne pas inclure de BOM au début des fichiers UTF-8.
Nicosmos
Iguane
Messages : 633
Inscription : 20 août 2005, 14:17

Message par Nicosmos »

Ah oui en effet ... J'ai encodé sans BOM et ça fonctionne, merci :)
Qu'est ce que le BOM ? A quoi sert t'il ?

Edit: Dernier petit problème, qui a un rapport avec l'encodage aussi. Si le mail envoyé (depuis un formulaire HTML dans une page en UTF-8) contient des accentuations, le message que je reçoit à des erreurs d'encodage (les caractères sont remplacés par d'autres caractères spéciaux). Quelqu'un connait une solution ?
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

La solution, c'est de savoir et de déclarer l'encodage à toutes les étapes de la chaine, y-compris dans les entêtes l'email envoyé :wink:

Pour le BOM : http://fr.wikipedia.org/wiki/Marque_d'ordre_des_octets :P

Edit: en français, le BOM, c'est mieux :P
Nicosmos
Iguane
Messages : 633
Inscription : 20 août 2005, 14:17

Message par Nicosmos »

La solution, c'est de savoir et de déclarer l'encodage à toutes les étapes de la chaine, y-compris dans les entêtes l'email envoyé
J'ai ajouté un header "Content-Type" pour les mails envoyés comme ceci :

Code : Tout sélectionner

Content-Type: text/html; charset=UTF-8
C'est à dire en Php :

Code : Tout sélectionner

$entete = "Content-Type: text/html; charset=UTF-8";
Mais l'affichage du courielleur reste le même. Est-ce que Thunderbird (et autres) savent reconnaitre les différents types d'encodage (et en changer quand on leur demande avec Content-Type) ? :?

Edit> Argh, non désolé, ça fonctionne ! :D J'éditais le mauvais fichier :oops:
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Nicosmos a écrit :Edit> Argh, non désolé, ça fonctionne ! :D J'éditais le mauvais fichier :oops:
Content que tu ait pu résoudre ton problème :D

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.14) Gecko/20080418 Firelimace/7.10 Firefox/2.0.0.14
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités