contact formulier, webpagina geeft foutmelding na verzending
ik worstel nu al een paar dagen met een contact formulier, het code ziet er naar mijn mening goed uit alleen bij verzending krijg ik een pop-up foutmelding van de webpaginga met daarin de text "sorry, unexpected error. please try later." Het bericht wordt wel verzonden, ik ontvang het ook maar wel door mijn provider de melding dat het spam kan zijn. enig idee waar het nog aan kan liggen?
Op mijn hosting heb ik zelfs geprobeerd om de spam filter op het laagste score te zetten, kijken of het daar aan ligt maar tevergeefs.
Light het aan de server waar de website draait misschien?
mvg,
Errol
Op wat voor een server heb je momenteel je site draaien? Is als het goed is aangegeven op de website van je hosting.
Naam Waarde
Processornaam Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Vendor ID GenuineIntel
Processorsnelheid (MHz) 3399.861
Processornaam Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Vendor ID GenuineIntel
Processorsnelheid (MHz) 3399.861
Processornaam Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Vendor ID GenuineIntel
Processorsnelheid (MHz) 3399.861
Processornaam Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Vendor ID GenuineIntel
Processorsnelheid (MHz) 3399.861
Processornaam Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Vendor ID GenuineIntel
Processorsnelheid (MHz) 3399.861
Processornaam Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Vendor ID GenuineIntel
Processorsnelheid (MHz) 3399.861
Processornaam Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Vendor ID GenuineIntel
Processorsnelheid (MHz) 3399.861
Processornaam Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
Vendor ID GenuineIntel
Processorsnelheid (MHz) 3399.861
Totaal aan geheugen 32804000 kB
Vrij geheugen 1769752 kB
Totaal swap geheugen 16474108 kB
Vrij swap geheugen 15894644 kB
Systeem uptime 38 dagen, 19 uren en 31 minuten
Apache 2.2.27 Draait
DirectAdmin 1.47.0 Draait
Exim 4.76 Draait
MySQL 5.5.37 Draait
Named 9.8.2rc1 Draait
ProFTPd 1.3.4b Draait
sshd Draait
dovecot 2.2.12 Draait
Php 5.4.26 Geïnstalleerd
Is het een server probleem dan?
Waar komt het bericht: "sorry, unexpected error. please try later." precies vandaan?
Immers, je zegt dat de mail aankomt dus een server probleem is denk ik niet het eerste waar je naar moet kijken.
Misschien de php code hier even plaatsen? (alleen het relevante deel, geen honderden regels)??
het bericht wordt opzicht wel verzonden en ontvangen, wel door mijn hosting wordt aangegeven dat het om spam kan gaan.
zie bericht:
Spam detection software, running on the system "s01.domeinwinkel.nl",
has identified this incoming email as possible spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Name: Errol Email: [email protected] Message: Dit is een
test mail [...]
Content analysis details: (6.9 points, 5.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
(plate4900[at]gmail.com)
0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail
domains are different
1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail)
0.9 SPF_HELO_SOFTFAIL SPF: HELO does not match SPF record (softfail)
0.0 HTML_MESSAGE BODY: HTML included in message
1.1 MIME_HTML_ONLY BODY: Message only has text/html MIME parts
0.6 HTML_MIME_NO_HTML_TAG HTML-only message, but there is no HTML tag
0.0 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and EnvelopeFrom
freemail headers are different
2.1 MALFORMED_FREEMAIL Bad headers on message from free email service
1.3 RDNS_NONE Delivered to internal network by a host with no rDNS
The original message was not completely plain text, and may be unsafe to
open with some email clients; in particular, it may contain a virus,
or confirm that your address can receive spam. If you wish to view
it, it may be safer to save it to a file and open it with an editor.
Staat die melding 'sorry unexpected error. please try later.' in het script? En waar wordt die aangeroepen?
Stuur even het PHP script van hoe het contactformulier wordt verzonden.
Code (php)
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
69
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
69
<?php
//Retrieve form data.
//GET - user submitted data using AJAX
//POST - in case user does not support javascript, we'll use POST instead
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
$email = ($_GET['email']) ?$_GET['email'] : $_POST['email'];
$comment = ($_GET['comment']) ?$_GET['comment'] : $_POST['comment'];
//flag to indicate which method it uses. If POST set it to 1
if ($_POST) $post=1;
//Simple server side validation for POST data, of course, you should validate the email
if (!$name) $errors[count($errors)] = 'Please enter your name.';
if (!$email) $errors[count($errors)] = 'Please enter your email.';
if (!$comment) $errors[count($errors)] = 'Please enter your message.';
//if the errors array is empty, send the mail
if (!$errors) {
//recipient - replace your email here
$to = '[email protected]';
//sender - from the form
$from = $name . ' <' . $email . '>';
//subject and the html message
$subject = 'Message from ' . $name;
$message = 'Name: ' . $name . '<br/><br/>
Email: ' . $email . '<br/><br/>
Message: ' . nl2br($comment) . '<br/>';
//send the mail
$result = sendmail($to, $subject, $message, $from);
//if POST was used, display the message straight away
if ($_POST) {
if ($result) echo 'Thank you! We have received your message.';
else echo 'Sorry, unexpected error. Please try again later';
//else if GET was used, return the boolean value so that
//ajax script can react accordingly
//1 means success, 0 means failed
} else {
echo $result;
}
//if the errors array has values
} else {
//display the errors message
for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
echo '<a href="index.html">Back</a>';
exit;
}
//Simple mail function with HTML header
function sendmail($to, $subject, $message, $from) {
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
$result = mail($to,$subject,$message,$headers);
if ($result) return 1;
else return 0;
}
?>
//Retrieve form data.
//GET - user submitted data using AJAX
//POST - in case user does not support javascript, we'll use POST instead
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
$email = ($_GET['email']) ?$_GET['email'] : $_POST['email'];
$comment = ($_GET['comment']) ?$_GET['comment'] : $_POST['comment'];
//flag to indicate which method it uses. If POST set it to 1
if ($_POST) $post=1;
//Simple server side validation for POST data, of course, you should validate the email
if (!$name) $errors[count($errors)] = 'Please enter your name.';
if (!$email) $errors[count($errors)] = 'Please enter your email.';
if (!$comment) $errors[count($errors)] = 'Please enter your message.';
//if the errors array is empty, send the mail
if (!$errors) {
//recipient - replace your email here
$to = '[email protected]';
//sender - from the form
$from = $name . ' <' . $email . '>';
//subject and the html message
$subject = 'Message from ' . $name;
$message = 'Name: ' . $name . '<br/><br/>
Email: ' . $email . '<br/><br/>
Message: ' . nl2br($comment) . '<br/>';
//send the mail
$result = sendmail($to, $subject, $message, $from);
//if POST was used, display the message straight away
if ($_POST) {
if ($result) echo 'Thank you! We have received your message.';
else echo 'Sorry, unexpected error. Please try again later';
//else if GET was used, return the boolean value so that
//ajax script can react accordingly
//1 means success, 0 means failed
} else {
echo $result;
}
//if the errors array has values
} else {
//display the errors message
for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
echo '<a href="index.html">Back</a>';
exit;
}
//Simple mail function with HTML header
function sendmail($to, $subject, $message, $from) {
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
$result = mail($to,$subject,$message,$headers);
if ($result) return 1;
else return 0;
}
?>
enig idee waarom de popup steeds komt bij elke keer verzending van de email?
Daarom is mijn advies om de headers even aan te passen, naar de manier waar ik linkte.
maar de popup blijf ik krijgen bij het verzenden van de formulier...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
if ($_POST) {
if ($result){
echo 'Thank you! We have received your message.';
}
else { echo 'Sorry, unexpected error. Please try again later';
}
//else if GET was used, return the boolean value so that
//ajax script can react accordingly
//1 means success, 0 means failed
} else {
echo $result;
}
if ($result){
echo 'Thank you! We have received your message.';
}
else { echo 'Sorry, unexpected error. Please try again later';
}
//else if GET was used, return the boolean value so that
//ajax script can react accordingly
//1 means success, 0 means failed
} else {
echo $result;
}
Heb je overigens geen name meegegeven aan de button om te verzenden? Dan zal $_POST - $_POST['submit'] moeten zijn. (of zeg ik nu iets heel geks)
Gewijzigd op 24/02/2015 13:23:24 door CNEPHP -
Toevoeging op 24/02/2015 14:04:19:
Zodra ik $_POST - $_POST('submit') krijg ik een syntax error...
dit is de html:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<button type="button" class="close" data-dismiss="alert"></button>
Uw bericht is succesvol verzonden!
</div>
</div>
<form method="post" action="contact.php" id="contactform">
<div class="form">
<input class="col-md-6" type="text" name="name" placeholder="Naam *">
<input class="col-md-6" type="text" name="email" placeholder="E-mail *">
<textarea class="col-md-12" name="comment" rows="7" placeholder="Bericht, Suggesties *"></textarea>
<input type="submit" id="submit" class="btn" value="Verzenden">
</div>
</form>
Uw bericht is succesvol verzonden!
</div>
</div>
<form method="post" action="contact.php" id="contactform">
<div class="form">
<input class="col-md-6" type="text" name="name" placeholder="Naam *">
<input class="col-md-6" type="text" name="email" placeholder="E-mail *">
<textarea class="col-md-12" name="comment" rows="7" placeholder="Bericht, Suggesties *"></textarea>
<input type="submit" id="submit" class="btn" value="Verzenden">
</div>
</form>
Toevoeging op 24/02/2015 14:47:43:
beste ik heb in een JS. file de validatie proces gevonden:
Code (php)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//if submit button is clicked
$('#submit').click(function () {
//Get the data from all the fields
var name = $('input[name=name]');
var email = $('input[name=email]');
var regx = /^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+\.([a-z]{2,4})$/i;
var comment = $('textarea[name=comment]');
var returnError = false;
//Simple validation to make sure user entered something
//Add your own error checking here with JS, but also do some error checking with PHP.
//If error found, add hightlight class to the text field
if (name.val()=='') {
name.addClass('error');
returnError = true;
} else name.removeClass('error');
if (email.val()=='') {
email.addClass('error');
returnError = true;
} else email.removeClass('error');
if(!regx.test(email.val())){
email.addClass('error');
returnError = true;
} else email.removeClass('error');
if (comment.val()=='') {
comment.addClass('error');
returnError = true;
} else comment.removeClass('error');
// Highlight all error fields, then quit.
if(returnError == true){
return false;
}
//organize the data
var data = 'name=' + name.val() + '&email=' + email.val() + '&comment=' + encodeURIComponent(comment.val());
//disabled all the text fields
$('.text').attr('disabled','true');
//show the loading sign
$('.loading').show();
//start the ajax
$.ajax({
//this is the php file that processes the data and sends email
url: "contact.php",
//GET method is used
type: "GET",
//pass the data
data: data,
//Do not cache the page
cache: false,
//success
success: function (html) {
//if contact.php returned 1/true (send mail success)
if (html==1) {
//show the success message
$('.done').fadeIn('slow');
$(".form").find('input[type=text], textarea').val("");
//if contact.php returned 0/false (send mail failed)
} else alert('Sorry, unexpected error. Please try again later.');
}
});
//cancel the submit button default behaviours
return false;
});
});
$('#submit').click(function () {
//Get the data from all the fields
var name = $('input[name=name]');
var email = $('input[name=email]');
var regx = /^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+\.([a-z]{2,4})$/i;
var comment = $('textarea[name=comment]');
var returnError = false;
//Simple validation to make sure user entered something
//Add your own error checking here with JS, but also do some error checking with PHP.
//If error found, add hightlight class to the text field
if (name.val()=='') {
name.addClass('error');
returnError = true;
} else name.removeClass('error');
if (email.val()=='') {
email.addClass('error');
returnError = true;
} else email.removeClass('error');
if(!regx.test(email.val())){
email.addClass('error');
returnError = true;
} else email.removeClass('error');
if (comment.val()=='') {
comment.addClass('error');
returnError = true;
} else comment.removeClass('error');
// Highlight all error fields, then quit.
if(returnError == true){
return false;
}
//organize the data
var data = 'name=' + name.val() + '&email=' + email.val() + '&comment=' + encodeURIComponent(comment.val());
//disabled all the text fields
$('.text').attr('disabled','true');
//show the loading sign
$('.loading').show();
//start the ajax
$.ajax({
//this is the php file that processes the data and sends email
url: "contact.php",
//GET method is used
type: "GET",
//pass the data
data: data,
//Do not cache the page
cache: false,
//success
success: function (html) {
//if contact.php returned 1/true (send mail success)
if (html==1) {
//show the success message
$('.done').fadeIn('slow');
$(".form").find('input[type=text], textarea').val("");
//if contact.php returned 0/false (send mail failed)
} else alert('Sorry, unexpected error. Please try again later.');
}
});
//cancel the submit button default behaviours
return false;
});
});
wat mij opvalt moet het method niet post zijn ? en bij returned 0/ false de waarde niet 1 hebben?
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 24/02/2015 17:24:38 door - Ariën -
Je moet ook deze [ ] haakjes gebruiken ipv ( ).
met haakjes krijg ik een foutmelding...syntax error..
- validatie zowel in JavaScript als PHP (dit is niet per definitie verkeerd)
- verwerking van zowel $_GET als $_POST
Ik zou dit alles simpeler maken. Tenzij je een heel toegankelijke site wilt maken mag je verwachten dat JavaScript ondersteund wordt (verwerking van $_GET kan eruit, tenzij dit een speciale reden heeft?).
En als je dan toch AJAX / jQuery gebruikt om je formulier te verwerken, controleer je data dan enkel aan de PHP-zijde en communiceer eventuele fouten terug via de callback-functie (controle van formulier in JavaScript kan eruit).
Daarnaast doe je iets aparts: je disabled je tekstvelden. Als je disabled velden verstuurt dan zijn deze volgens mij altijd leeg of worden zelfs niet verstuurd. Heb je de inhoud van $_POST wel eens op je scherm afgedrukt?
Ook zou ik geen .click() gebruiken, maar .submit(function(e) {}) en het normaal versturen van het formulier afvangen met e.preventDefault().