Eenvoudig probleem email
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
// Replace this with your own email address
$siteOwnersEmail = '[email protected]';
if($_POST) {
$fname = trim(stripslashes($_POST['contactFname']));
$lname = trim(stripslashes($_POST['contactLname']));
$email = trim(stripslashes($_POST['contactEmail']));
$tel = trim(stripslashes($_POST['contactTel']));
$straat = trim(stripslashes($_POST['contactStraat']));
$postcode = trim(stripslashes($_POST['contactPostcode']));
$subject = trim(stripslashes($_POST['contactSubject']));
$contact_message = trim(stripslashes($_POST['contactMessage']));
// Check First Name
if (strlen($fname) < 2) {
$error['fname'] = "Voer uw voornaam in.";
}
// Check Last Name
if (strlen($lname) < 2) {
$error['lname'] = "Voer uw achternaam in.";
}
// Check Postcode
if (strlen($postcode) ) {
$error['postcode'] = "Voer uw postcode + woonplaats in.";
}
// Check Straat
if (strlen($straat) ) {
$error['straat'] = "Voer uw straatnaam + huisnummer in.";
}
// Check Tel
if(preg_match("/^[0-9]{2}-[0-9]{8}$/",$_REQUEST['telnr']) OR preg_match("/^[0-9]{3}-[0-9]{7}$/",$_REQUEST['tel']) OR preg_match("/^[0-9]{4}-[0-9]{6}$/",$_REQUEST['tel']) OR preg_match("/^[0-9]{10}$/",$_REQUEST['tel']))
{
}
// Check Email
if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
$error['email'] = "Voer een geldig emailadres in.";
}
// Check Message
if (strlen($contact_message) < 15) {
$error['message'] = "Voer een bericht in, deze moet minimaal 15 tekens bevatten.";
}
// Subject
if ($subject == '') { $subject = "Contact Form Submission"; }
// Set Name
$name = $fname . " " . $lname;
// Set Message
$message .= "Email from: " . $name . "<br />";
$message .= "Email address: " . $email . "<br />";
$message .= "Telefoonnummer: " . $tel . "<br />";
$message .= "Straatnaam+Huisnummer: " . $straat . "<br />";
$message .= "Postcode+Huisnummer: " . $postcode . "<br />";
$message .= "Probleem: <br />";
$message .= $contact_message;
$message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />";
// Set From: header
$from = $name . " <" . $email . ">";
// Email Headers
$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: ". $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
if (!$error) {
ini_set("sendmail_from", $siteOwnersEmail); // for windows server
$mail = mail($siteOwnersEmail, $subject, $message, $headers);
if ($mail) { echo "OK"; }
else { echo "Iets is fout gegaan. Probeer het opnieuw."; }
} # end if - no validation error
else {
$response = (isset($error['fname'])) ? $error['fname'] . "<br /> \n" : null;
$response .= (isset($error['lname'])) ? $error['lname'] . "<br /> \n" : null;
$response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
$response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;
$response .= (isset($error['postcode'])) ? $error['postcode'] . "<br />" : null;
$response .= (isset($error['straat'])) ? $error['straat'] . "<br />" : null;
$response .= (isset($error['tel'])) ? $error['tel'] . "<br />" : null;
echo $response;
} # end if - there was a validation error
}
?>
// Replace this with your own email address
$siteOwnersEmail = '[email protected]';
if($_POST) {
$fname = trim(stripslashes($_POST['contactFname']));
$lname = trim(stripslashes($_POST['contactLname']));
$email = trim(stripslashes($_POST['contactEmail']));
$tel = trim(stripslashes($_POST['contactTel']));
$straat = trim(stripslashes($_POST['contactStraat']));
$postcode = trim(stripslashes($_POST['contactPostcode']));
$subject = trim(stripslashes($_POST['contactSubject']));
$contact_message = trim(stripslashes($_POST['contactMessage']));
// Check First Name
if (strlen($fname) < 2) {
$error['fname'] = "Voer uw voornaam in.";
}
// Check Last Name
if (strlen($lname) < 2) {
$error['lname'] = "Voer uw achternaam in.";
}
// Check Postcode
if (strlen($postcode) ) {
$error['postcode'] = "Voer uw postcode + woonplaats in.";
}
// Check Straat
if (strlen($straat) ) {
$error['straat'] = "Voer uw straatnaam + huisnummer in.";
}
// Check Tel
if(preg_match("/^[0-9]{2}-[0-9]{8}$/",$_REQUEST['telnr']) OR preg_match("/^[0-9]{3}-[0-9]{7}$/",$_REQUEST['tel']) OR preg_match("/^[0-9]{4}-[0-9]{6}$/",$_REQUEST['tel']) OR preg_match("/^[0-9]{10}$/",$_REQUEST['tel']))
{
}
// Check Email
if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
$error['email'] = "Voer een geldig emailadres in.";
}
// Check Message
if (strlen($contact_message) < 15) {
$error['message'] = "Voer een bericht in, deze moet minimaal 15 tekens bevatten.";
}
// Subject
if ($subject == '') { $subject = "Contact Form Submission"; }
// Set Name
$name = $fname . " " . $lname;
// Set Message
$message .= "Email from: " . $name . "<br />";
$message .= "Email address: " . $email . "<br />";
$message .= "Telefoonnummer: " . $tel . "<br />";
$message .= "Straatnaam+Huisnummer: " . $straat . "<br />";
$message .= "Postcode+Huisnummer: " . $postcode . "<br />";
$message .= "Probleem: <br />";
$message .= $contact_message;
$message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />";
// Set From: header
$from = $name . " <" . $email . ">";
// Email Headers
$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: ". $email . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
if (!$error) {
ini_set("sendmail_from", $siteOwnersEmail); // for windows server
$mail = mail($siteOwnersEmail, $subject, $message, $headers);
if ($mail) { echo "OK"; }
else { echo "Iets is fout gegaan. Probeer het opnieuw."; }
} # end if - no validation error
else {
$response = (isset($error['fname'])) ? $error['fname'] . "<br /> \n" : null;
$response .= (isset($error['lname'])) ? $error['lname'] . "<br /> \n" : null;
$response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
$response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;
$response .= (isset($error['postcode'])) ? $error['postcode'] . "<br />" : null;
$response .= (isset($error['straat'])) ? $error['straat'] . "<br />" : null;
$response .= (isset($error['tel'])) ? $error['tel'] . "<br />" : null;
echo $response;
} # end if - there was a validation error
}
?>
Gewijzigd op 16/04/2015 22:18:02 door - Ariën -
wat zie je dan?
[email protected]" ["contactSubject"]=> string(9) "undefined" ["contactMessage"]=> string(38) "fdsfdsjgnhfadkjan jfa gflg mkf m lfka" } OK
array(5) { ["contactFname"]=> string(6) "Sander" ["contactLname"]=> string(6) "Sander" ["contactEmail"]=> string(16) "Gewijzigd op 15/04/2015 15:34:22 door Sander Zijnstra
Wat ik ook niet direct snap is waarom je $_REQUEST voor het telefoonnummer gebruikt en niet gewoon $_POST. Daarnaast gebruik je in die request de ene keer 'tel' en de andere 'telnr'.
Gewijzigd op 15/04/2015 15:55:38 door Jeffrey van Rossum
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
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
<form name="contactForm" id="contactForm" method="post" action="">
<fieldset>
<div class="row">
<div class="six columns mob-whole">
<label for="contactFname">Voornaam <span class="required">*</span></label>
<input name="contactFname" type="text" id="contactFname" placeholder="Voornaam" value="" />
</div>
<div class="six columns mob-whole">
<label for="contactLname">Achternaam <span class="required">*</span></label>
<input name="contactLname" type="text" id="contactLname" placeholder="Achternaam" value="" />
</div>
</div>
<div class="row">
<div class="six columns mob-whole">
<label for="contactStraat">Straat+Huisnummer <span class="required">*</span></label>
<input name="contactStraat" type="text" id="contactStraat" placeholder="Straat+Huisnummer" value="" />
</div>
<div class="six columns mob-whole">
<label for="contactPostcode">Postcode+Woonplaats <span class="required">*</span></label>
<input name="contactPostcode" type="text" id="contactPostcode" placeholder="Postcode+Woonplaats" value="" />
</div>
</div>
<div class="row">
<div class="six columns mob-whole">
<label for="contactEmail">Email <span class="required">*</span></label>
<input name="contactEmail" type="text" id="contactEmail" placeholder="Email" value="" />
</div>
<div class="six columns mob-whole">
<label for="contactTel">Telefoonnummer</label>
<input name="contactTel" type="text" id="contactTel" placeholder="Telefoonnummer" value="" />
</div>
</div>
<div class="row">
<div class="twelve columns">
<label for="contactMessage">Bericht <span class="required">*</span></label>
<textarea name="contactMessage" id="contactMessage" placeholder="Uw bericht" rows="10" cols="50" ></textarea>
</div>
</div>
<div>
<button class="submit full-width">Verstuur</button>
<div id="image-loader">
<img src="images/loader.gif" alt="" />
</div>
</div>
</fieldset>
</form>
<fieldset>
<div class="row">
<div class="six columns mob-whole">
<label for="contactFname">Voornaam <span class="required">*</span></label>
<input name="contactFname" type="text" id="contactFname" placeholder="Voornaam" value="" />
</div>
<div class="six columns mob-whole">
<label for="contactLname">Achternaam <span class="required">*</span></label>
<input name="contactLname" type="text" id="contactLname" placeholder="Achternaam" value="" />
</div>
</div>
<div class="row">
<div class="six columns mob-whole">
<label for="contactStraat">Straat+Huisnummer <span class="required">*</span></label>
<input name="contactStraat" type="text" id="contactStraat" placeholder="Straat+Huisnummer" value="" />
</div>
<div class="six columns mob-whole">
<label for="contactPostcode">Postcode+Woonplaats <span class="required">*</span></label>
<input name="contactPostcode" type="text" id="contactPostcode" placeholder="Postcode+Woonplaats" value="" />
</div>
</div>
<div class="row">
<div class="six columns mob-whole">
<label for="contactEmail">Email <span class="required">*</span></label>
<input name="contactEmail" type="text" id="contactEmail" placeholder="Email" value="" />
</div>
<div class="six columns mob-whole">
<label for="contactTel">Telefoonnummer</label>
<input name="contactTel" type="text" id="contactTel" placeholder="Telefoonnummer" value="" />
</div>
</div>
<div class="row">
<div class="twelve columns">
<label for="contactMessage">Bericht <span class="required">*</span></label>
<textarea name="contactMessage" id="contactMessage" placeholder="Uw bericht" rows="10" cols="50" ></textarea>
</div>
</div>
<div>
<button class="submit full-width">Verstuur</button>
<div id="image-loader">
<img src="images/loader.gif" alt="" />
</div>
</div>
</fieldset>
</form>
- 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 16/04/2015 22:17:27 door - Ariën -
Tenzij je op de een of andere manier magic-quotes hebt weten in te schakelen.
if(preg_match("/^[0-9]{2}-[0-9]{8}$/",$_REQUEST['telnr']) OR preg_match("/^[0-9]{3}-[0-9]{7}$/",$_REQUEST['tel']) OR preg_match("/^[0-9]{4}-[0-9]{6}$/",$_REQUEST['tel']) OR preg_match("/^[0-9]{10}$/",$_REQUEST['tel']))
Kennelijk bestaat een telefoonnummer altijd uit 10 cijfers met mogelijk ergens een - erin?
Maar +316123456 is ook een telefoonnummer?
Nog afgezien van buitenlandse nummers...
Maar je dwingt weer niet af dat het eerste cijfer een 0 is....
!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is',
Zo'n regex is nooit uitputtend. Gelukkig mis aan het einde nog (onbedoeld?) een $ zodat de laatste 2 tekens niet per se letters zijn. (zodat naast .nl en .be ook .com, .info en .vlaanderen geaccepteerd worden)
handiger is echter om gewoon met de ingebouwde filters te werken:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if(!filter_input(INPUT_POST, 'contactEmail', FILTER_VALIDATE_EMAIL){
$error['email'] = "Voer een geldig emailadres in.";
}
?>
if(!filter_input(INPUT_POST, 'contactEmail', FILTER_VALIDATE_EMAIL){
$error['email'] = "Voer een geldig emailadres in.";
}
?>
Dank voor jullie hulp! Het probleem zat hem echter in het feit dat er nog javascript bestand tussen zat waar de nodige toevoegingen in gemaakt moesten worden.
Jij zet userinput in subject en in het formveld.
Als iemand een newline in zijn voornaam zet, kan hij daarna zelf wat headers toevoegen en dus ook een 1000tal ontvangers.
En na nog 2 newlines zet hij zijn eigen inhoud van de mail.
Zelfde kan hij ook doen door in subject met newlines te spelen.
Controleer uitgebreid of dergelijke velden bevatten wat jij verwacht. En ook niet meer dan dat.
En vooral dat er in de velden als naam, subject en emailadres geen enters staan.
Om voor nog meer zekerheid te gaan, is het ook niet onhandig om een mailclass als phpmailer of swiftmailer te gebruiken. Dergelijke scripts filteren zelf ook op rariteiten in velden als emailadressen en subject.
En bedenk ook dat niet alleen jij betrokken bent bij een lek maiform, maar ook de duizenden ontvangers van spam via jouw site.