Bonjour,
Le site de mon club propose un formulaire de contact.
Tout fonctionne très bien, cependant les courriels qui sont renvoyés suite à la soumission d'un message composé par ce formulaire comportent des balises html que j'aimerai ne pas voir apparaître. Voici un exemple de ce qui est renvoyé :
On peut voir les balises <br /> et les caractères spéciaux genre '
Voici le code php du traitement du message saisi dans le formulaire :
Il y a pourtant une fonction de remplacement des caractères spéciaux ... mais cela ne fonctionne pas.
Merci d'avance pour votre aide.
Modifié par lool_lauris (17 Mar 2013 - 22:15)
Le site de mon club propose un formulaire de contact.
Tout fonctionne très bien, cependant les courriels qui sont renvoyés suite à la soumission d'un message composé par ce formulaire comportent des balises html que j'aimerai ne pas voir apparaître. Voici un exemple de ce qui est renvoyé :
Bonjour<br />
Je recherche un planeur biplace M200.<br />
Etat indifférent mais complet et avec ces documents de vol.<br />
Sinon toutes pièces et éléments.<br />
Merci de passer l'info à d'autres clubs.<br />
Bons vols<br />
On peut voir les balises <br /> et les caractères spéciaux genre '
Voici le code php du traitement du message saisi dans le formulaire :
[code=php]<fieldset>
<legend>Vos coordonnées</legend>
<p><label class="item_formulaire">Prénom : </label><br />
<span class="reponse_formulaire"><?php echo htmlspecialchars($_POST['prenom']); ?> </span></p>
<p><label class="item_formulaire">NOM : </label><br />
<span class="reponse_formulaire"><?php echo htmlspecialchars($_POST['nom']); ?> </span></p>
<p><label class="item_formulaire">Courriel : </label><br />
<span class="reponse_formulaire"><?php echo htmlspecialchars($_POST['courriel']); ?> </span></p>
<p><label class="item_formulaire">Téléphone : </label><br />
<span class="reponse_formulaire"><?php echo htmlspecialchars($_POST['tel']); ?> </span></p>
</fieldset>
<fieldset>
<legend>Vos souhaits</legend>
<p>
<label class="item_formulaire">Informations optionnelles : </label><br />
<span class="reponse_formulaire"><?php if (isset($_POST['vi'])) echo htmlspecialchars($_POST['vi']); ?> </span><br />
<span class="reponse_formulaire"><?php if (isset($_POST['eleve'])) echo htmlspecialchars($_POST['eleve']); ?> </span><br />
<span class="reponse_formulaire"><?php if (isset($_POST['pilote'])) echo htmlspecialchars($_POST['pilote']); ?> </span><br />
<span class="reponse_formulaire"><?php if (isset($_POST['instructeur'])) echo htmlspecialchars($_POST['instructeur']); ?> </span><br />
<span class="reponse_formulaire"><?php if (isset($_POST['stage'])) echo htmlspecialchars($_POST['stage']); ?> </span><br /><br />
</p>
<p>
<label class="item_formulaire">Message : </label><br />
<span class="reponse_formulaire"><?php echo nl2br(htmlspecialchars($_POST['message'])); ?> </span><br /><br />
<span class="item_formulaire"><?php if (isset($_POST['copie'])) echo htmlspecialchars($_POST['copie']); ?><br />
</p>
</fieldset>
<p><label class="item_formulaire">Date : </label><span class="reponse_formulaire"><?php echo (htmlspecialchars(date("Y-m-d H:i:s"))); ?> </span><br /><br /></p>
<?php
try /* EN CAS D'ERREUR */
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=sql.xxx;dbname=xxx', 'lsv_bdd', 'xxx', $pdo_options);
// AJOUT DES ENTRÉES DANS LA TABLE formulaire
$req = $bdd->prepare('INSERT INTO formulaire (date_envoi, nom, prenom, courriel, tel, vi, eleve, pilote, instructeur, stage, message) VALUES( :date, :nom, [langue]renom, :courriel, :tel, :vi, :eleve, [langue]ilote, :instructeur, :stage, :message)');
$req->execute(array(
'date' => (htmlspecialchars(date("Y-m-d H:i:s"))),
'nom' => htmlspecialchars($_POST['nom']),
'prenom' => htmlspecialchars($_POST['prenom']),
'courriel' => htmlspecialchars($_POST['courriel']),
'tel' => htmlspecialchars($_POST['tel']),
'vi' => (isset($_POST['vi'])),
'eleve' => (isset($_POST['eleve'])),
'pilote' => (isset($_POST['pilote'])),
'instructeur' => (isset($_POST['instructeur'])),
'stage' => (isset($_POST['stage'])),
'message' => htmlspecialchars($_POST['message'])
));
$req->closeCursor(); // Important : on libère le curseur pour la prochaine requête
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
<?php
// destinataire est mon adresse de courriel. Pour envoyer à plusieurs à la fois, il faut séparer les adresses par une virgule
$destinataire = 'xxx@xxx';
// copie ? (envoie une copie au visiteur)
$copie = (isset($_POST['copie'])) ? 'oui' : 'non'; // 'oui' ou 'non'
// Messages de confirmation du courriel
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du courriel a échoué, mais votre message nous est quand même bien parvenu.";
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a href=\"formulaire_contact.php\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'adresse de courriel soit sans erreur.";
// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<fieldset><p class=nook>'.$message_erreur_formulaire.'</p></fieldset><br /><br />'."\n";
}
else
{
/* cette fonction sert à nettoyer et enregistrer un texte */
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/* Cette fonction sert à vérifier la syntaxe d'un courriel */
function IsEmail($courriel)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (mb_eregi($pattern,$courriel)) ? true : false;
};
// formulaire envoyé, on récupère tous les champs.
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$courriel = (isset($_POST['courriel'])) ? Rec($_POST['courriel']) : '';
$tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
$vi = (isset($_POST['vi'])) ? Rec($_POST['vi']) : '';
$eleve = (isset($_POST['eleve'])) ? Rec($_POST['eleve']) : '';
$pilote = (isset($_POST['pilote'])) ? Rec($_POST['pilote']) : '';
$instructeur = (isset($_POST['instructeur'])) ? Rec($_POST['instructeur']) : '';
$stage = (isset($_POST['stage'])) ? Rec($_POST['stage']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
$informations = $prenom.' '.$nom."\n".$courriel."\n".$tel."\n\n".$vi."\n".$eleve."\n".$pilote."\n".$instructeur."\n".$stage."\n\n".$message;
// On va vérifier les variables et le courriel ...
$courriel = (IsEmail($courriel)) ? $courriel : ''; // soit le courriel est vide si erroné, soit il vaut le courriel entré
if (($prenom != '') && ($nom != '') && ($message != ''))
{
// les 3 variables sont remplies, on génère puis envoie le courriel
$headers = 'Formulaire LSV - De : '.$prenom.' '.$nom.'' . "\r\n";
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$courriel;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = str_replace("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);
// Envoi du courriel
if (mail($cible, $headers, $informations))
{
echo '<fieldset><p class=ok>'.$message_envoye.'</p></fieldset><br /><br />'."\n";
}
else
{
echo '<fieldset><p class=erreur>'.$message_non_envoye.'</p></fieldset><br /><br />'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<fieldset><p class=nook>'.$message_formulaire_invalide.' <br /><a href="formulaire_contact.php">Retour au formulaire > </a></p></fieldset><br /><br />'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>
[/code]Il y a pourtant une fonction de remplacement des caractères spéciaux ... mais cela ne fonctionne pas.
Merci d'avance pour votre aide.
Modifié par lool_lauris (17 Mar 2013 - 22:15)