8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai mis en place un code pour recueillir par mail les informations taper dans un formulaire. Le souci est que je reçois des caractères bizarre pour les accents. Exemple si l'utilisateur tape comme prénom Mélanie, je reçois : Mélanie.

Autre chose, j'ai placer des case à cocher, j'arrive à recevoir sans problème les données dans ma BDD grâce à "implode" mais je reçois "Array" dans le mail de confirmation.

J'ai modifié mes fichiers en utf-8 (sams bom) mais rien n'y fait.

Voici mon code, je vous remercie par avance.

<?php
Header("Location: tournoi_index_remerciement.php"); 

mysql_connect("*****.fr", "******", "******")  OR die('Erreur de connexion à la base');
mysql_select_db("****");

if(isset($_POST['Valider']))
{
$prenom = stripslashes($_POST['prenom']);
$pseudoFO = stripslashes($_POST['pseudoFO']);
$pseudo = stripslashes($_POST['pseudo']);
$joueur = stripslashes($_POST['joueur']);
$dispo_journaliere = implode(', ', $_POST['dispo_journaliere']);
$dispo_horaire = implode(', ', $_POST['dispo_horaire']);
$email = stripslashes($_POST['email']);
    
// On ajoute une entrée avec mysql_query
$req = ("INSERT INTO inscr_formulaire (inscr_prenom, inscr_pseudoFO, inscr_pseudo, inscr_joueur, inscr_dispo_journaliere, inscr_dispo_horaire, inscr_email)
VALUES ('".$prenom."','".$pseudoFO."','".$pseudo."','".$joueur."','".$dispo_journaliere."','".$dispo_horaire."','".$email."')");
echo $req;
$res = mysql_query($req) or die ("Requête échouée");

}

mysql_close();

$to = "inscription@*****.fr"; // Traitement du formulaire
$subject = 'Inscription au tournoi'; // Traitement du formulaire

$message ="Une nouvelle inscription au tournoi a été effectué, voici les informations recueillies : \n 
Prénom du participant : ".$_POST['prenom']." \r 
Email : ".$_POST['email']." \r 
Pseudo forum : ".$_POST['pseudoFO']." \r
Pseudo : ".$_POST['pseudo']." \r
Joueur sélectionné : ".$_POST['joueur']." \r
Disponbilités : ".$_POST['dispo_journaliere']." \r
Disponibilités horaire : ".$_POST['dispo_horaire']." \r";

$headers = 'From: inscription@*****.fr' . "\r\n" . 
'Reply-To: inscription@******.fr' . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 

exit;
?>
Hello,

draklane a écrit :
je reçois : Mélanie
Ce qui correspond à des caractères encodés en utf-8 mais présentés en latin1 et c'est normal puisque tu ne spécifies pas l'encodage dans les headers du mail (cf. la fonction mail). Par exemple :
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'To: inscription@*****.fr' . "\r\n";
$headers .= 'From: '.htmlspecialchars($_POST['email']). "\r\n";
$headers .= 'Reply-To: '.htmlspecialchars($_POST['email']). "\r\n";
Au passage ce n'est pas stripslashes qu'il faut utiliser mais mysql_real_escape_string pour protéger tes variables lors de l'insertion mysql et htmlspecialchars pour les variables du mail.

Pour les cases à cocher c'est normal puisque tu récupères l'implode dans $dispo_journaliere mais que tu utilises $_POST['dispo_journaliere'] dans le mail.
Modifié par Heyoan (05 Jul 2009 - 20:29)
Waou, génial je te remercie pour cette précision. Tout fonctionne parfaitement maintenant. Merci beaucoup.

Par contre je reçois tout le contenu du mail sur la même ligne, il n'y a pas de saut de ligne. Je ne comprends pas la nuance entre \n et \r. J'ai essayé de mettre \n\n mais ça ne marche toujours pas.

J'ai une petite question : comment éviter qu'un participant ne valide plusieurs fois le formulaire ?

Merci d'avance.