Page 1 sur 1

Formulaire de contact simple

Posté : 15 févr. 2013, 10:53
par GaetanV
Bonjour, je suis en train de développer un formulaire de contact assez simple :
• le formulaire se trouve dans une page contact.html
• il est vérifié et validé par une surcouche jquery
• et est traité par un script php situé sur une page traitement.php

Tout fonctionne à merveille, j'ai juste deux choses à régler :
1 - problème d'encodage sur la page traitement.php (je pense), car lorsque je reçois les mails, les lettres accentuées DANS LE CORPS DU MAIL UNIQUEMENT sont remplacées (exemple : "é" se transforme en "é" et "à" devient "Ã")

2 - j'aimerais que le message de confirmation d'envoi apparaisse juste au dessus du formulaire et non sur la page traitement.php qui est chargée.

Je pense que c'est tout bête à régler, mais je ne maîtrise pas le PHP, du coup, je bidouille...

Pour gagner du temps, je vous glisse mes codes :

LE FORMULAIRE SUR LA PAGE CONTACT.HTML
<form id="formulaire" method="post" action="traitement.php" >
<p class="error"></p>
                <h2>Nom complet et/ou société</h2> 
                <input class="form-text" required="true" type="text" name="nom" id="nom" value=""/>
        		
                <h2>Adresse e-mail</h2>
        	<input class="form-text" type="text" mask="email" required="true" name="email" id="email" value=""/>
				
                <h2>Téléphone</h2> 
        	<input class="form-text" mask="phone" required="true" type="text" name="telephone" id="tel" value=""/>
                        		
        	<h2>Message</h2>
        	<textarea class="form-textarea" rows="8" cols="40" required="true" name="message" id="message"></textarea><br/>
        		
                <button class="form-bouton" type="submit">Envoyer</button>
</form>
MA PAGE TRAITEMENT.PHP
<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','[email protected]');
define('MAIL_SUJET','Nouveau message');
 
// vérification des champs
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['email']))
$message .= "Votre e-Mail<br/>";
if (empty($_POST['telephone']))
$message .= "Votre téléphone<br/>";
if (empty($_POST['message']))
$message .= "Votre message<br/>";
 
// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (strlen($message) > strlen($msg_erreur)) {
  echo $message; die();
}
 
// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}

//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
             ."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-type: text/plain; charset=utf-8\r\n';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
 
// préparation du corps du mail
$mail_corps = "Message de : $nom\n";
$mail_corps .= "e-Mail : $email\n";
$mail_corps .= "Téléphone : $telephone\n";
$mail_corps .= "Message : $message\n";
 
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
  //Le mail est bien expédié
  echo $msg_ok;
} else {
  //Le mail n'a pas été expédié
  echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
 
?>
Pourriez-vous m'aider à résoudre mes deux petits soucis ?
MERCI

Re: Formulaire de contact simple

Posté : 17 févr. 2013, 00:00
par moogli
Salut,

As tu testé utf8_encode ?

Pour le 2, réalise le traitement du formulaire sur la même page que sur l'affichage du formulaire (et donc l'action du formulaire devient action="" ou utilise PHP_SELF).

@+

Re: Formulaire de contact simple

Posté : 18 févr. 2013, 09:25
par Warisaac
Bonjour, merci pour votre retour... mais niveau sécurité, le fait d'avoir le formulaire sur la même page c'est pas risqué ?