formulaire améliorations
Posté : 21 août 2013, 18:11
Bonjour j'ai enfin fait un formulaire de contact par moi même avec du javascript et ajax.
Tout est testé dans un fichier php à part puis renvoyé...
Vois ci dessous:
fichier:php
Je voudrais savoir:
Si mon code est affreux ou passable?
Comment améliorer le code?
Que faire si JS est désactivé?
Merci
Tout est testé dans un fichier php à part puis renvoyé...
Vois ci dessous:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans nom</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
var $form = $('#monForm');
$('#envoyer').on('click', function() {
$form.trigger('submit');
return false;
});
$form.on('submit', function() {
var nom = $('#nom').val();
var email = $('#email').val();
var message = $('#message').val();
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
dataType: 'json',
success: function(json) {
if(json.valide == false){
if (json.erreurnom == true){
$('#errornom').html("erreur nom");
$('#success').html("");
}else{
$('#errornom').html("");
}
if (json.erreuremail == true){
$('#erroremail').html("erreur email");
$('#success').html("");
}else{
$('#erroremail').html("");
}
if (json.emailinvalide == true){
$('#erroremail').html("email invalide");
$('#success').html("");
}else if(json.erreuremail == true){
$('#erroremail').html("erreur email");
$('#success').html("");
}else{
$('#erroremail').html("");
}
if (json.erreurmessage == true){
$('#errormessage').html("erreur message");
$('#success').html("");
}else{
$('#errormessage').html("");
}
}else{
$('#success').html("succes!");
$('#errormessage').html("");
$('#erroremail').html("");
$('#errornom').html("");
}
}
});
return false;
});
});
</script>
</head>
<body>
<form id="monForm" action="fichier.php" method="post">
<label for="nom">nom</label>
<input type="text" id="nom" name="nom" />
<div id="errornom"></div>
<label for="email">Email</label>
<input type="text" id="email" name="email" />
<div id="erroremail"></div>
<label for="message">Message</label>
<textarea id="message" name="message"></textarea>
<input type="submit" id="envoyer" value="Envoyer" />
<div id="errormessage"></div>
<div id="success"></div>
</form>
</body>
</html>
fichier:php
<?php
$n = array();
if(!empty($_POST)){
extract($_POST);
$valid=true;
if(empty($nom)){
$valid=false;
$erreur="Erreur nom";
$n['erreurnom'] = true;
}
if(empty($email)){
$valid=false;
$erreur="Erreur email";
$n['emailinvalide'] = false;
$n['erreuremail'] = true;
}elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)){
$valid=false;
$erreur = "Votre email n'est pas valide";
$n['erreuremail'] = false;
$n['emailinvalide'] = true;
}
if(empty($message)){
$valid=false;
$erreur="Erreur message";
$n['erreurmessage'] = true;
}
}else{
$valid = false;
}
$n['valide'] = $valid;
echo json_encode($n);
if($valid = true){
$to = "[email protected]";
$sujet = $nom." a contacté le site";
$header = "From: $nom <$email> \n";
/*
*A la place
*$header = "From: [email protected] \n";
*$header .= "Reply-To: $email";
*contre le spam auto
*/
$message = stripslashes($message);
$nom = stripslashes($nom);
if(mail($to,$sujet,$message,$header)){
$erreur = "Votre email nous est bien parvenu";
unset($nom);
unset($email);
unset($message);
}
else{
$erreur = "Une erreur est survenue. Mail bloqué";
}
}
?>
Je voudrais savoir:
Si mon code est affreux ou passable?
Comment améliorer le code?
Que faire si JS est désactivé?
Merci