Formulaire et caractères spéciaux

Petit nouveau ! | 4 Messages

27 août 2010, 18:14

Bonjour à tous !

Je suis débutant en php mais j'ai préféré mettre ce topic dans php avancée car je pense que c'est un peu compliqué mon truc (ou pas ?).

Alors tout d'abord j'ai une page recrutement.php qui contient ce code :

Code : Tout sélectionner

<?php if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message'])) { $destinataire = '[email protected]'; $email = htmlentities($_POST['email']); if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email))) { $sujet = 'Contact: '.stripslashes($_POST['sujet']); $message = stripslashes($_POST['message']); $headers = "From: <".$email.">\n"; $headers .= "Reply-To: ".$email."\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; if(mail($destinataire,$sujet,$message,$headers)) { echo "<strong>Votre message a bien &eacute;t&eacute; envoy&eacute;.</strong>"; } else { echo "<strong style=\"color:#ff0000;\">Une erreur c'est produite lors de l'envois du message.</strong>"; } } else { echo "<strong style=\"color:#ff0000;\">L'email que vous avez entr&eacute; est invalide.</strong>"; } } else { ?> <form action="http://www.tournoiarea.com/app/vues/formmail/formmail.php" method="post"> <p> <fieldset class="solid"> <legend>Formulaire de recrutement</legend> <label for="email" style="display:inline-block;width:100px;" class="border"><strong>Votre Email:</strong></label> <input type="text" name="email" id="email" /><br /> <label for="sujet" style="display:inline-block;width:100px;" class="border"><strong>Poset :</strong></label> <select name="sujet" id="sujet"> <optgroup label="Organisateurs"> <option value="Counter-Strike 1.6">Counter-Strike 1.6</option> <option value="Counter-Strike : Source">Counter-Strike : Source</option> <option value="Call Of Duty 4">Call Of Duty 4</option> <option value="Left For Dead">Left For Dead</option> </optgroup> <optgroup label="Modérateurs"> <option value="Counter-Strike 1.6">Counter-Strike 1.6</option> <option value="Counter-Strike : Source">Counter-Strike : Source</option> <option value="Call Of Duty 4">Call Of Duty 4</option> <option value="Left For Dead">Left For Dead</option> </optgroup> <optgroup label="Autres"> <option value="IRC-MASTER">IRC-MASTER</option> </optgroup> </select> <br /> <label for="message" class="border"><strong>Message:</strong></label><br /> <textarea cols="70" rows="4" name="message" id="message"></textarea><br /> <input type="submit" value="Envoyer" /> </fieldset> </p> </form> <?php } ?>
Ensuite, j'ai cette page => "formmail.php"

Code : Tout sélectionner

<?php $TO = "[email protected]"; $h = "From: " . $email; $message = ""; while (list($key, $val) = each($HTTP_POST_VARS)) { $message .= "$key : $val\n"; } mail($TO, $sujet, $message, $h); header('location: http://www.tournoiarea.com/merci/merci' ); ?>
Dans le code html donc dans la page recrutement.tpl j'appel le fichier "formmail.php" une fois que l'utilisateur clic sur "envoyer".

Le problème est que lorsque je fais appel à cette page "formmail.php" , sa me redirige bien, je reçois le mail mais les caractères spéciaux ne s'affichent pas.

En revanche, quand je laisse la ligne qui appel le fichier "formmail.php" vide, et bien les caractères spéciaux s'affichent bien mais je n'ai pas ma redirection voulu et si on fait "Précédent" le formulaire est renvoyer dans je le reçois en plusieurs fois.

Je ne sais pas trop comment faire.

Merci