Bonjour à tous
Voici mon problème :
tout allait bien, jusqu'à ce que je mette le code en ligne. En local avec un serveur wamp, la fonctionnalité passe très bien, je recois le mail sans ereur et la page ne se recharge pas, j'affiche un message comme quoi le mail à bien été envoyé.
En revanche, une fois sur un serveur ovh, ca ne passe plus, il m'affiche l'erreur suivante:
je ne comprends pas cette erreur, car lorsque je verifie les données passé en post avec l'inspecteur de chrome, il y a bien une donné liée au champ lastname qui est envoyé. Mais c'est comme si la page process.php qui traite les données envoyées ne recevait pas l'information...
Code : Sélectionner tout - Visualiser dans une fenêtre à part {"error":"Vous n'avez pas rentr\u00e9 de nom de famille"}
je viens vers vous car là, je sèche! Un petit coup de main?
voici les trois parties du code :
HTML:
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 <div id="contact-form"> <form id='form_mail' method="post" action="process.php" class=""> <div id="errors" > </div> <table> <tr> <td class="title_td"> <label for="prenom" class="">Votre prénom</label> </td> </tr> <tr> <td class="title_td"> <input type="text" id="name" name="name" class="vider" placeholder="Cliquez pour renseigner votre prénom" value="" required=""> </td> </tr> <tr> <td class="title_td"> <label for="nom" class="">Votre nom</label> </td> </tr> <tr> <td class="title_td"> <input type="text" id="lastname" name="lastname" class="vider" placeholder="Cliquez pour renseigner votre nom de famille" value="" required=""> </td> </tr> <tr> <td class="title_td"> <label for="email" class="width100" >Votre adresse Email</label> </td> </tr> <tr> <td class="title_td"> <input type="email" id="email" name="email" class="vider" placeholder="Cliquez pour renseigner votre adresse Email" value="" required=""> </td> </tr> </table> <table> <tr> <td class="title_td"> <label for="objet" class="">Objet de votre message</label> </td> </tr> <tr> <td class="title_td"> <input type="text" id="objet" name="objet" class="vider" placeholder="Cliquez pour renseigner le sujet de votre message" value="" required=""> </td> </tr> <tr> <td class="form-block"> <label for="message">Votre message</label> </td> <tr> <td class="title_td"> <textarea id="message" name="message" class="vider" placeholder="Cliquez pour commencer à écrire votre message" required=""></textarea> </td> </tr> <tr> <td class="form-block form-submit"> <input type="submit" name="submit" value="Envoyer" id="submit" class=""> </td> </tr> <tr> <td class="title_td"><p>Note : Tous les champs doivent obligatoirement être remplis</p></td> </tr> </tr> </table> </form> </div>
Le JS
et enfin, la page process.php appelée dans la fonction JS:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 function action_form(){ $("#form_mail").submit(function(event) { event.preventDefault(); $("#errors").fadeOut(200).html("").fadeIn(); prenom = $(this).find("#name").val(); nom = $(this).find("#lastname").val(); email = $(this).find("#email").val(); objet = $(this).find("#objet").val(); message = $(this).find("#message").val(); $.post("process.php", { prenom:prenom, nom:nom, email:email, objet:objet, message:message }, function(data) { if(data == "") { $("#errors").append("<p id='info'>Votre mail m'est bien parvenu. Merci.</p>"); $(':input','#form_mail').not(':button, :submit, :reset, :hidden').val('').removeAttr('checked').removeAttr('selected'); } else { for(i in data) { $("#errors").append("<p id='info'>Il semble quelque chose ce soit mal passé...votre message n'a pas été envoyé : <br />" + data[i] + "</p>"); } } }, "json"); return false; }) }
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 <?php if( !empty($_POST) ){ $formok = true; $errors = array(); //submission data $ipaddress = $_SERVER['REMOTE_ADDR']; $date = date('d/m/Y'); $time = date('H:i:s'); $name = $_POST['prenom']; $lastname = $_POST['nom']; $email = $_POST['email']; $objet = $_POST['objet']; $message = $_POST['message']; if(empty($name)){ $formok = false; $errors['error'] = "Vous n'avez pas rentré de prénom"; } if(empty($lastname)){ $formok = false; $errors['error'] = "Vous n'avez pas rentré de nom de famille"; } if(empty($email)){ $formok = false; $errors['error'] = "Vous n'avez pas rentré d'email"; //validate email address is valid }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){ $formok = false; $errors['error'] = "Vous n'avez pas rentré d'email valide"; } if(empty($objet)){ $formok = false; $errors['error'] = "Vous n'avez pas rentré d'objet"; } if(empty($message)){ $formok = false; $errors['error'] = "Vous n'avez pas rentré de messages"; } //validate message is greater than 20 characters elseif(strlen($message) < 2){ $formok = false; $errors['error'] = "Votre message doit être supérieur à 20 caractères"; } else{ $message= nl2br(htmlspecialchars($message)); } if($formok){ //$errors['error'] = 'Ok'; $headers = "From: {$email}". "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $emailbody = "<p>Vous avez reçu un nouveau message de votre site web.</p> <p><strong>De: </strong>{$name} {$lastname}</p> <p><strong>Adresse mail: </strong>{$email}</p> <p><strong>Objet du message: </strong>{$objet}</p> <p><strong>Message: </strong> {$message}</p> <p>Ce message a été envoyé depuis l'adresse IP: {$ipaddress} le {$date} à {$time}</p>"; mail("monmail@mail.com","{$objet}",$emailbody,$headers); } echo json_encode($errors); } ?>
merci à tous ceux qui se pencheront sur ce souci!
Partager