[AJAX] Script d'un formulaire de contact de base

suppr_18032010
 

Message le Mer Jan 23, 2008 8:16

Salut !

Pourquoi tu ne récupères pas l'IP dans la page contact.php ($ip = getenv("REMOTE_ADDR"); ) et tu la passes dans le contact.js dans la fonction function valeurCheck() {

contact.js (je n'ai repris que la fonction valeurCheck()
Code: Tout sélectionner
function valeurCheck() {
   var name = document.getElementById('name').value;
   var email = document.getElementById('email').value;
   var comment = document.getElementById('comment').value;
   var societe = document.getElementById('societe').value;
   var ip = document.getElementById('ip').value;
   
   // CHECK MESSAGE -- on commence par en bas pour que le onfocus replace la page au bon niveau d'erreur
   if(comment == "" ){ // si champ comment vide
      document.getElementById('comment').focus(); // focus dans le champ
      document.getElementById('comment').style.border = '1px solid #D41919'; // on change la couleur du border du INPUT
      document.getElementById('commentbox').innerHTML = '<font style="color:#cc0000"><img src="images\/no.gif" alt="" \/> Veuillez entrer votre message.<\/font>'; // on affichage le message dans le div ID
   }else{ // si champ comment rempli
      document.getElementById('comment').style.border = '1px solid #CFD8E0'; // on remet la couleur du border du INPUT
      document.getElementById('commentbox').innerHTML = '&nbsp;<img src="images\/yes.gif" alt="" \/>'; // on affiche une image OK
   }
   
   // CHECK EMAIL
    if(email == "" ){
      document.getElementById('email').focus();
      document.getElementById('email').style.border = '1px solid #D41919';
      document.getElementById('emailbox').innerHTML = '<font style="color:#cc0000"><img src="images\/no.gif" alt="" \/> Veuillez entrer votre email.<\/font>';
   }else if (!validEmail(email)) {
      document.getElementById('email').focus();
      document.getElementById('email').select();
      document.getElementById('email').style.border = '1px solid #D41919';
      document.getElementById('emailbox').innerHTML = '&nbsp;<img src="images\/no.gif" alt="" \/> <font color="#FD1813">Votre email n\'est pas valide<\/font>';
   }else{
      document.getElementById('email').style.border = '1px solid #CFD8E0';
      document.getElementById('emailbox').innerHTML = '&nbsp;<img src="images\/yes.gif" alt="" \/>';
   }
   
   // CHECK NOM
   if(name == "" ){
      document.getElementById('name').focus();
      document.getElementById('name').style.border = '1px solid #D41919';
      document.getElementById('namebox').innerHTML = '<font style="color:#cc0000"><img src="images\/no.gif" alt="" \/> Veuillez entrer votre nom.<\/font>';
   }else{
      document.getElementById('name').style.border = '1px solid #CFD8E0';
      document.getElementById('namebox').innerHTML = '&nbsp;<img src="images\/yes.gif" alt="" \/>';
   }
   
   // CHECK FINAL
   if ( (name == "") || (email == "") || (!validEmail(email) )|| (comment == "") ) {
      return false;
   }
   
   url = 'contact-check.php?name=' + escape(name) + '&email=' + escape(email) + '&societe=' + escape(societe) + '&comment=' + escape(comment) + '&ip=' + escape(ip);
   ajax_get (url, 'result');
}



contact.php
Code: Tout sélectionner
<?php
$ip = getenv("REMOTE_ADDR");
?>
<script type="text/javascript" src="contact.js"></script>
<dl>
<dt>Votre nom &nbsp;&nbsp;<div id="namebox" style="display:inline;"><font class='maj job bold size10'>|Obligatoire|</font></div></dt>
<dd><input type="text" name="name" id="name" value="" size="60" /></dd>
<dt>Votre société </dt>
<dd><input type="text" name="societe" id="societe" value="" size="60" /></dd>
<dt>Votre email &nbsp;&nbsp;<div id="emailbox" style="display:inline;"><font class='maj job bold size10'>|Obligatoire|</font></div></dt>
<dd><input type="text" name="email" id="email" value="" size="60" /></dd>
<dt>Votre message &nbsp;&nbsp;<div id="commentbox" style="display:inline;"><font class='maj job bold size10'>|Obligatoire|</font></div></dt>
<dd><textarea name="comment" id="comment" cols="90" rows="8" /></textarea></dd>
<dd><input type="button" name="Envoyer" value=" Envoyer votre message " class="submit" onClick="valeurCheck()">
<input type="hidden" name="ip" id="ip" value="<?php echo $ip; ?>" />
<div id="result" style="display:inline;"> </div></dd>
</dl>



contact-check.php
Code: Tout sélectionner
<?php
include "conf.php";
// INTERDIRE LE CACHE IE
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// ENCODAGE
header("Content-Type: text/html; charset=iso-8859-1");

$date = date("d M Y à H:i:s");

//pour éviter les injections
if (eregi("\r",$_GET['email']) || eregi("\n",$_GET['email'])){
   $email = "";
}else{
   $email = $_GET['email'];
}

$recipient = "votreemail@email.fr";
$subject = "Formulaire de contact";
$mailheaders = "From: <".$email."> \r\n";
$mailheaders .= "Reply-To: <".$email."> \r\n";
$mailheaders .= "Bcc: ".$adminemail2." \r\n";
$mailheaders .= "Return-Path: <".$adminemail."> \n";
$mailheaders .= "X-Sender: <".$adminemail."> \n";
$mailheaders .= "X-Mailer: PHP \n";
$mailheaders .= "X-Priority: 1 \n";
$mailheaders .= "MIME-Version: 1.0 \n";
$mailheaders .= "Content-Type: text/html; charset=iso-8859-1 \n";
$msg = " <br>\n";
$msg .= "$date |  ".htmlspecialchars(stripslashes($_GET['name']))." ".htmlspecialchars(stripslashes($_GET['societe']))." ".htmlspecialchars(stripslashes($_GET['ip']))." <br>\n";
$msg .= " <br>\n";
$msg .= htmlspecialchars(stripslashes($_GET['comment']))." <br>\n";   
$msg .= " <br>\n";
$msg .= " <br>\n";
mail($recipient, $subject, $msg, $mailheaders) or die("Impossible d'envoyer le mail...");

// on renvoie le message de confirmation...
echo "<br><font style=\"color:#1A7917; line-height:13px;\"><img src='/images/yes.gif' alt='' /> Votre email a été envoyé avec succès...<br/>Nous prendrons contact avec vous dans les meilleurs délais.</font><br>";
?>


h4ni
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 486
Inscription: 11 Juil 2005

Message le Mer Jan 23, 2008 13:13

Merci xperienss
ca marche tres bien :)


h4ni
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 486
Inscription: 11 Juil 2005

Message le Ven Fév 08, 2008 15:06

Bonjour
depuis une erreur on obtien une erreur quand on utilise le formail
Image
pourtant j'ai rien modifier
quelqu'un a une idée?


h4ni
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 486
Inscription: 11 Juil 2005

Message le Ven Fév 08, 2008 15:30

C'est bon! j'ait trouvé!
c'etai a cause d'un code htaccess que j'ai ajouter

Merci

gbourgeo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 1
Inscription: 22 Oct 2008

Message le Mer Oct 22, 2008 11:27

Bonjour,

Je suis tombé sur ce fil en cherchant les mots clé suivant dans google "contact formulaire ajax", et je trouve le script très chouette. J'ai juste rencontré un petit problème :

Le email que je recevais n'était pas affiché correctement, j'avais le header dans le corps du email. La solution a été de modifier le fichier contact-check.php de la manière suivante

Code: Tout sélectionner
$mailheaders = "From: <".$email."> \n";
$mailheaders .= "Reply-To: <".$email."> \n";
$mailheaders .= "Bcc: ".$adminemail2." \n";
$mailheaders .= "Return-Path: <".$adminemail."> \n";
$mailheaders .= "X-Sender: <".$adminemail."> \n";
$mailheaders .= "X-Mailer: PHP \n";
$mailheaders .= "X-Priority: 1 \n";
$mailheaders .= "MIME-Version: 1.0 \n";
$mailheaders .= "Content-Type: text/html; charset=iso-8859-1 \n";# Mime type


en fait je ne sais pas si c'est le fait de remplacer \r\n par \n ou bien si j'avais oublié de mettre un espace avant \n qui a résolu le problème.

La deuxième remarque concerne la mise en page du email qui supprimait les retours à la ligne et mettait tout en un gros bloc, la solution a été de modifier la ligne suivante :
Code: Tout sélectionner
$msg .= htmlspecialchars(stripslashes($_GET['comment']))." <br>\n";


en

Code: Tout sélectionner
$msg .= nl2br(htmlspecialchars(stripslashes($_GET['comment'])))." <br>\n";


Voila j'espère que cela pourra servir.

Gil Bourgeois

[AJAX] Script d'un formulaire de contact de base

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 0 invités