Bonjour,
je savais pas trop où poster mon message, dans la section php ou la section javascript...
je m'explique :
J'ai un site internet qui affiche le contenu de mes différentes rubriques par un système
coda slider. Système plaisant pour ne pas avoir à recharger tout le temps les pages quand on change de section.
Dans ma rubrique contact, j'ai un formulaire d'envoi mail en javascript lié à un php qui envoie le mail directement sur ma boite.
Le problème est que du coup j'me ramasse plein de spam de bot qui injèctent des champs vides ou des données dans mon formulaire vu que les tests sur les champs sont dans le javascript
(l'intérêt est de pouvoir afficher le message d'erreur pour l'utilisateur avec un alert, on recharge toujours pas la page)
J'aimerais donc pouvoir effectuer des tests sur le php une fois que le javascript a validé les informations requises pour l'envoi mail.
Voici le formulaire HTML :
Code HTML :
<form method="post" action="envoiemail.php" name="contact">
<table border="0" align="left" cellspacing="5">
<tr>
<td>Nom : <font color="#FF0000">*</font></td>
<td><input name="nom" type="text" id="nom" size="20" />
</td>
</tr>
<tr>
<td>Prénom :</td>
<td><input name="prenom" id="prenom" type="text" size="20" /></td>
</tr>
<tr>
<td>Email : <font color="#FF0000">*</font></td>
<td><input id="mail" name="mail" type="text" size="20" />
</td>
</tr>
<tr>
<td>Tel. :</td>
<td><input name="tel" type="text" id="tel" size="20" maxlength="10" />
</td>
</tr>
<tr>
<td>Objet : <font color="#FF0000">*</font></td>
<td><input name="objet" type="text" id="objet" size="20" /></td>
</tr>
<tr>
<td>Message : <font color="#FF0000">*</font></td>
<td><textarea name="commentaire" cols="25" rows="8" id="commentaire">Écrivez ici votre message</textarea></td>
</tr>
<tr>
<td></td>
<td> <div align="left">
<input id="boutonEnvoyer" name="submit" type="button" value="Envoyer "/> <p style="color:#Ff0000">(* Champs nécessaires)</p>
</div></td>
</tr>
</table>
</form>
Voici mon morceau de javascript qui gère le html (trouvé sur le net)
Code Javascript :
var nom="";
var prenom="";
var mail="";
var tel="";
var objet="";
var commentaire="";
document.getElementById("boutonEnvoyer").onclick=envoiMail;
function envoiMail(){
if ((document.getElementById('nom').value=="")||(document.getElementById('mail').value=="")||(document.getElementById('objet').value=="")||(document.getElementById('commentaire').value=="")||(document.getElementById('commentaire').value=="Écrivez ici votre message")){alert("Erreur !\nVous n'avez pas renseigné les champs correctement.")}else{
xhr=new XMLHttpRequest;
xhr.open("POST",'../envoiemail.php',true);
xhr.onreadystatechange=function(){
if(xhr.readyState==4){ alert("Merci ! \n nous avons bien reçu votre mail. \n Nous tâcherons de vous répondre dans les plus brefs délais.");} }
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("nom="+document.getElementById('nom').value+"&prenom="+document.getElementById('prenom').value +"&mail="+document.getElementById('mail').value +"&tel="+document.getElementById('tel').value +"&objet="+document.getElementById('objet').value +"&commentaire="+document.getElementById('commentaire').value);
} }
Et voici le contenu de envoiemail.php (trouvé également sur le net) :
Code PHP :
<?php
$destinataire= 'adresse@mail.com';
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$mail = $_POST['mail'];
$tel = $_POST['tel'];
$objet = $_POST['objet'];
$commentaire = $_POST['commentaire'];
function decoder($texte){
$texte = utf8_decode($texte);
$texte = str_replace("\r", "\n", $texte);
$texte = str_replace("\'", "'", $texte);
return $texte;
}
$objet = decoder($objet);
$commentaire = decoder($commentaire);
$FormContent="
-
Bonjour,
Vous avez reçu un message de
Nom :$nom\n
Prénom : $prenom\n
Tél : $tel\n
Mail : $mail\n
Il vous contacte pour le motif suivant : $objet\n
Et voici son message :\n
$commentaire\n
".urlencode(utf8_encode($FormContent));
echo $FormContent;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .= "From: adresse@mail.com \r\nReply-to : $mail \nX-Mailer:PHP";
mail($destinataire,$objet, $FormContent,$headers ) ;
?>
Pour mes tests j'ai essayé un truc de ce genre dans envoiemail.php : (le test est pas optimisé, mais c'est pas important)
Code PHP :
if (($nom=="")||($mail=="")||($objet=="")||($commentaire=="")||($commentaire=="Écrivez ici votre message")){}
else{mail($destinataire,$objet, $FormContent,$headers ) ;}
Un peu d'aide serait pas de refus, s'il vous plaît.
merci
LiasS