Bonsoir à tout le monde.

Voilà je suis un retraité bénévole qui m’occupe d’un projet d’association régionale pour aider des personnes à mobilité réduite.

J’ai en charge le projet d’un tout petit site de 3/4 pages sur lequel je travaille tout seul dans mon coin.
Il sera en HTML5, CSS3, accessible et responsive.

Ca se passe bien côté HTML et CSS mais je rencontre un problème avec le formulaire.
Je vous donne le code d’abord et j’expose le problème ensuite.

Le formulaire d’abord.


<form id='contact' method='post'>
<h2>Envoyer un message...</h2>
<form id="contact" method="post">
<ul>
<li>
<label for="senderName">Votre nom ?</label>
<input type="text" name="form_name" id="form_name" placeholder="Votre nom" type="text" required='required' />
</li>
<li>
<label for='senderEmail'>Votre adresse mail ?</label>
<input name="form_email" id="form_email" type="email" placeholder="Votre mail" required='required' />
</li>
<label for="telephone">Votre téléphone</label>
<input type="text" name="form_tel" id="telephone" placeholder="Votre n° de téléphone." required='required' />
</li>
</ul>
<input type="submit" value="ENVOI" name="submit" class="button">
</form>
<p class="okey" style="hidden">Votre message a bien été envoyé.</p>

Là (mais je peux me tromper) je crois qu’il n’y a pas de problème. Vous me direz le cas échéant.


Dans ce formulaire il y a un bout Javascript pour traiter en Ajax le message et le retour d’information.
Ce sont ces lignes :

<script>
$(function() {
$("#contact .button").click(function() { 
	var name = $("#form_name").val();
	var email = $("#form_email").val();
	var tel = $("#form_tel").val();
	var dataString = 'name='+ name + '&email=' + email + '&tel=' + tel;
	$.ajax({ type: "POST", url: "email.php", data: dataString, 
	success: function(){ $('.success').fadeIn(1000); }}); 
	return false;  
		}); 
	});
</script>

Autant vous prévenir tout de suite c’est un code que j’ai écrit en tentant de comprendre la doc de jQuery.
Il me semble bon, mais ça ne marche pas et c’est très incomplet.


C’est peut être alors le fichier ancillaire (email.php) qui bloque quelque part…
Soit ça part et je ne reçois pas le contenu du message,
soit ça ne part pas.
De manips en manips je suis perdu.
Voici son code :
<?php if($_POST)
{
$name = $_POST['name'];
$email = $_POST['email'];
$tel = $_POST['tel']
$to = "supprime86@aaa.org";
$subject = "Me contacter";
$message  = "Nom : ".$name."\n";
$message .=  "Mail : ".$email."\n";
$message .=  "Tel : ".$tel."\n";

 
$headers ='From: "Message du site"<supprime86@aaa.org>'."\n";
$headers .='Reply-To: supprime86@aaa.org'."\n";
 
 
mail($to, $subject, $message , $headers)
} ?>


Outre les problèmes d’envoi que je viens d’évoquer j’ai réalisé après coup que je n’avais pas pensé à 2 choses importantes:

1) quand le visiteur envoi son message, le formulaire n’est pas vidé et moi, comme un idiot, je croyais que ça se faisait tout seul. Smiley confused
Il me faut donc régler ça aussi.

2) une autre chose auquelle je n’avais pas pensé non plus c’est que le serveur peut être en panne et que le message ne peut être traité. Il faut donc aussi que je traite l’erreur en la signalant à l’usager pour lui dire de recommencer.
Or, là, je ne traite que le succès de l’envoi.
(Non ce n’est pas vrai : que ça échoue ou réussisse c’est toujours "Votre message a bien été envoyé." qui apparaît.)

J’espère que vous pourrez m’aider parce qu’après 2 jours d’acharnement je dois me rendre à l’évidence. Tout seul je n’y arriverai pas.

Merci d’avance.
supprime86.
Modifié par Felipe (09 Nov 2012 - 17:23)
Salut,

Les envois de mails ont tendance a bugger en PHP du fait des nombreuses sécurités liés aux spams et compagnie, je te conseil d'utiliser un mailer genre SwiftMailer pour te faciliter la tache, après il se peut aussi que tu ai besoin de t'identifier auprès du serveur mail, particulièrement si ce n'est pas le même que ton serveur web.
Bonjour
j’ai remanié mon code ce matin et ça marche.

Rien de changé au niveau du formulaire HTML.

Les erreurs se situaient dans le fichier email.php.

Voici donc :


if($_POST) {
 
$name = $_POST['name'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$to = "supprime86@aaa.org";
$subject = "Me contacter";
$message  = 'Nom : '.$name."\n";
$message .=  'Mail : '.$email."\n";
$message .=  'Tel : '.$tel."\n";
 
$headers ='From: "Message du site"<supprime86@aaa.org>'."\n";
$headers .='Reply-To: supprime86@aaa.org'."\n";
 
 
if(mail($to, $subject, $message , $headers)) {
echo 'mail envoyé';
}
 } ?>


Un caillou oté de ma chaussure.

Il m’en reste 2 autres :

- vider le formulaire
- renvoyer le statut Erreur à Ajax avec le message qui va avec.

Dois-je ouvrir un autre sujet ?
Modifié par Felipe (09 Nov 2012 - 17:24)
Bonsoir,
supprime86 a écrit :


<form id='contact' method='post'>
<h2>Envoyer un message...</h2>
[b]<form id="contact" method="post">[/b]
<ul>
<li>
<label for="senderName">Votre nom ?</label>
<input type="text" name="form_name" id="form_name" placeholder="Votre nom" type="text" required='required' />
</li>
<li>
<label for='senderEmail'>Votre adresse mail ?</label>
<input name="form_email" id="form_email" type="email" placeholder="Votre mail" required='required' />
</li>
<label for="telephone">Votre téléphone</label>
<input type="text" name="form_tel" id="telephone" placeholder="Votre n° de téléphone." required='required' />
</li>
</ul>
<input type="submit" value="ENVOI" name="submit" class="button">
</form>
<p class="okey" style="hidden">Votre message a bien été envoyé.</p>

Là (mais je peux me tromper) je crois qu’il n’y a pas de problème. Vous me direz le cas échéant.

Je vois une balise form en trop...
Une mauvaise utilisation de certain label...
Modifié par Felipe (09 Nov 2012 - 17:24)
supprime86 a écrit :
Ce n'est qu'un mauvais copié/collé.

Dacodac.
Pour les labels également ?
Modifié par Felipe (09 Nov 2012 - 17:24)