veilig contact script?
graag feedback.
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
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
<?php
/* Set e-mail recipient */
$myemail = "[email protected]";
/* Check all form inputs using check_input function */
$yourname = check_input($_POST['yourname'], "Uw naam is niet ingevuld");
$subject = check_input($_POST['subject'], "Er is geen onderwerp ingevuld");
$email = check_input($_POST['email'], "Er is geen email adres ingeuld");
$comments = check_input($_POST['comments'], "Er is geen tekst in het veld uw bericht ingevuld");
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("E-mailadres is niet geldig");
}
/* Let's prepare the message for the e-mail */
$message = "Hallo!
Er werd een bericht gestuurd via de website www.mijnsite.be:
Name: $yourname
E-mail: $email
Comments:
$comments
End of message
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Redirect visitor to the thank you page */
header('Location: thanks.html');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<b>Er werden fouten vastgesteld bij het invullen van het contactformulier. Klik <a href="/contacteerons.php">hier</a> om terug te gaan en de verplichte velden in te vullen:</b><br />
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
/* Set e-mail recipient */
$myemail = "[email protected]";
/* Check all form inputs using check_input function */
$yourname = check_input($_POST['yourname'], "Uw naam is niet ingevuld");
$subject = check_input($_POST['subject'], "Er is geen onderwerp ingevuld");
$email = check_input($_POST['email'], "Er is geen email adres ingeuld");
$comments = check_input($_POST['comments'], "Er is geen tekst in het veld uw bericht ingevuld");
/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("E-mailadres is niet geldig");
}
/* Let's prepare the message for the e-mail */
$message = "Hallo!
Er werd een bericht gestuurd via de website www.mijnsite.be:
Name: $yourname
E-mail: $email
Comments:
$comments
End of message
";
/* Send the message using mail() function */
mail($myemail, $subject, $message);
/* Redirect visitor to the thank you page */
header('Location: thanks.html');
exit();
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<b>Er werden fouten vastgesteld bij het invullen van het contactformulier. Klik <a href="/contacteerons.php">hier</a> om terug te gaan en de verplichte velden in te vullen:</b><br />
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
- Ariën -:
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 18/11/2015 09:03:36 door - Ariën -
Alleen al de functie check_input vind ik gek. Waarom wordt daar stripslashes() of htmlspecialchars() gedaan? Je verminkt er alleen de gegevens mee, gezien het in een plaintext e-mail verdwijnt.
Nog meer opmerkingen, want je reactie komt over alsof het een slecht script is?
Helaas ben ik nog in een leerfase. Vandaar dat ik een reactie wilde vragen aan enkele ervaren php users.?
Verder zou ik eens kijken naar de ingebouwde validatie mogelijkheden van PHP: http://php.net/manual/en/filter.filters.validate.php, de e-mail regex slaat kortgezegd nergens op. Ook ben ik geen fan van de string syntax die je gebruikt. Variabelen kun je beter buiten quotes houden om onvoorspelbaar gedrag te voorkomen.
Advies is doorgaans om niet de mailfunctie te gebruiken, maar een class als phpmailer of swiftmailer.
Ik zou, zoals Ben ook aangeeft, het in 1 document onderbrengen. o.a. voordeel: je kunt de velden die ingevuld zijn, van een waarde voorzien, zodat de gebruiker niet alles opnieuw hoeft in te vullen. Velden die niet juist zijn ingevuld (volgens jouw controles) kun je voorzien van bv. een rood sterretje, zodat te zien is wat de gebruiker moet aanpassen.
Dat lukt volgens mij met je huidige opzet niet.
Als je dan toch ergens escaping wilt gebruiken (bijvoorbeeld als je een HTML e-mailbericht verstuurt), doe dit dan in $message, daar ben je bezig met output (je mailbody) en daar is dus output escaping op zijn plaats.
Indien er een probleem is wordt show_error() aangeroepn. Deze functie drukt een compleet (en leeg) HTML document af en geeft daarbij precies één foutmelding weer... Waarom toon je het formulier niet opnieuw waarbij je bij elk veld aangeeft wat er fout is (samen met de eerder ingetypte invoer) zodat de invuller dit direct kan aanpassen?
De reguliere expressie voor het e-mailadres klopt niet, deze accepteert een string waarin een e-mailadres voorkomt, je zult in ieder geval de meta-karakters voor het begin en het einde van je "subject" (een e-mailadres) moeten toevoegen, dit zijn respectievelijk ^ en $.
Vervolgens, een reguliere expressie retourneert het cijfer 1 indien de match is geslaagd. In alle andere gevallen retourneert deze iets anders (0 = geen match, false = foutmelding). De enige correcte manier om vast te stellen of er een match is dus door te vergelijken met het cijfer 1 (=== 1). En dus ook, de enige manier om vast te stellen dat er géén match is is door middel van !== 1.
Dan dekt deze reguliere expressie waarschijnlijk niet alle toegestane e-mailadressen, dus je kunt wellicht beter de filter_var() functie gebruiken.
En ja (zie bovenstaande reacties), zorg ervoor dat je formulier gebruiksvriendelijk(er) is.
Daarom ben ik op zoek gegaan naar andere voorbeelden en ben ik tot dit eindresultaat gekomen. Kunnen jullie aangeven of dit beter is? ivm PHPMailer, hier snap ik dus niets van hé :(
contactpage.php
<!doctype html>
<html lang="nl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>mijn nieuwe website</title>
<link rel="stylesheet" href="css/style-contact.css" type="text/css" media="screen" />
<link rel="stylesheet" href="/site2015v2/style2015.css" type="text/css" />
<link rel="stylesheet" href="/site2015v2/contact.css" type="text/css" />
<link rel="stylesheet" href="/site2015v2/fonts/font-caviardreams.css" type="text/css" charset="utf-8" />
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<table id="pagina"><tr><td id='td_pagina_top'>
<div id="top">
<div class="holder">
<a href='/' title='geheim'><img src="/site2015v2/images/logo_2015.jpg" id="logo_top" title='logo' width='980' height='200'/></a>
</div>
</div>
</td></tr><tr><td class='inhoud_bg_grijs'>
<div id="content">
<div class="holder">
</div>
<div id='inhoud_tekst'>
<h1>Contacteer ons:</h1>
<p> In het hier onderstaande contact formulier kunt u uw vragen of opmerkingen invoeren en naar ons mailen door op de knop Verzenden te drukken. We zullen zo snel mogelijk proberen te antwoorden op u vraag/opmerking.</p>
<div id="contactformulier">
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
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
<?php
if(isset($_POST['submit'])){
// haal de gegevens binnen voor de email
$naam = $_POST['naam'];
$email = $_POST['email'];
$telefoon = $_POST['tel'];
$bericht = $_POST['bericht'];
$spam = $_POST['spam'];
$uitkomst = $_POST['uitkomst'];
// spamcheck gegevens
$hidden = $_POST['hid1'];
$hidden2 = $_POST['hid2'];
// eindresultaat : zal bepalen of de mail wordt verzonden of niet
$resultaat = true;
// foutmelding array
// hier komen de foutmeldingen in
$foutmelding['naamleeg'] = 0;
$foutmelding['emailleeg'] = 0;
$foutmelding['emailfout'] = 0;
$foutmelding['berichtleeg'] = 0;
$foutmelding['spamleeg'] = 0;
$foutmelding['spamfout'] = 0;
$foutmelding['verzendenfout'] = 0;
// controleren of de hidden fields leeg zijn
// deze moeten leeg zijn
if(empty($hidden1) && empty($hidden2)){
// controleren of de naam is ingevuld
if(checkLength($naam)){
// foutmelding geen naam ingevuld
$foutmelding['naamleeg'] = 1;
$resultaat = false;
}
// controleren of de email is ingevuld
if(checkLength($email)){
// foutmelding geen geldig emailadres
$foutmelding['emailleeg'] = 1;
$resultaat = false;
}
else{
// controleren op geldigheid van emailadres
if(checkEmail($email)){
// foutmelding geen geldig emailadres
$foutmelding['emailfout'] = 1;
$resultaat = false;
}
}
// controleren of het bericht is ingevuld
if(checkLength($bericht)){
// foutmelding te kort bericht
$foutmelding['berichtleeg'] = 1;
$resultaat = false;
}
// controleren of de spamcontrole is ingevuld
if(checkLength($spam)){
// foutmelding geen spamresultaat ingevuld
$foutmelding['spamleeg'] = 1;
$resultaat = false;
}
else{
if(checkSpam($spam,$uitkomst)){
// foutmelding foutief spamresultaat
$foutmelding['spamfout'] = 1;
$resultaat = false;
}
}
}
else{
// foutmelding van ingevulde spamvelden
$resultaat = false;
}
if($resultaat){
// controleren of de email verstuurt is
if(verstuurMail($_POST)){
$_POST = null;
}
// de email is niet verstuurd
else{
$foutmelding['verzendenfout'] = 1;
$resultaat = false;
}
}
}
?>
if(isset($_POST['submit'])){
// haal de gegevens binnen voor de email
$naam = $_POST['naam'];
$email = $_POST['email'];
$telefoon = $_POST['tel'];
$bericht = $_POST['bericht'];
$spam = $_POST['spam'];
$uitkomst = $_POST['uitkomst'];
// spamcheck gegevens
$hidden = $_POST['hid1'];
$hidden2 = $_POST['hid2'];
// eindresultaat : zal bepalen of de mail wordt verzonden of niet
$resultaat = true;
// foutmelding array
// hier komen de foutmeldingen in
$foutmelding['naamleeg'] = 0;
$foutmelding['emailleeg'] = 0;
$foutmelding['emailfout'] = 0;
$foutmelding['berichtleeg'] = 0;
$foutmelding['spamleeg'] = 0;
$foutmelding['spamfout'] = 0;
$foutmelding['verzendenfout'] = 0;
// controleren of de hidden fields leeg zijn
// deze moeten leeg zijn
if(empty($hidden1) && empty($hidden2)){
// controleren of de naam is ingevuld
if(checkLength($naam)){
// foutmelding geen naam ingevuld
$foutmelding['naamleeg'] = 1;
$resultaat = false;
}
// controleren of de email is ingevuld
if(checkLength($email)){
// foutmelding geen geldig emailadres
$foutmelding['emailleeg'] = 1;
$resultaat = false;
}
else{
// controleren op geldigheid van emailadres
if(checkEmail($email)){
// foutmelding geen geldig emailadres
$foutmelding['emailfout'] = 1;
$resultaat = false;
}
}
// controleren of het bericht is ingevuld
if(checkLength($bericht)){
// foutmelding te kort bericht
$foutmelding['berichtleeg'] = 1;
$resultaat = false;
}
// controleren of de spamcontrole is ingevuld
if(checkLength($spam)){
// foutmelding geen spamresultaat ingevuld
$foutmelding['spamleeg'] = 1;
$resultaat = false;
}
else{
if(checkSpam($spam,$uitkomst)){
// foutmelding foutief spamresultaat
$foutmelding['spamfout'] = 1;
$resultaat = false;
}
}
}
else{
// foutmelding van ingevulde spamvelden
$resultaat = false;
}
if($resultaat){
// controleren of de email verstuurt is
if(verstuurMail($_POST)){
$_POST = null;
}
// de email is niet verstuurd
else{
$foutmelding['verzendenfout'] = 1;
$resultaat = false;
}
}
}
?>
<!--
Verborgen veld : afgehandeld
-->
<div id="succes" >
<p>Uw bericht is succesvol verstuurd!</p>
</div>
<!--
Einde verborgen velden
-->
<!--
Hier begint het formulier
-->
</form>
<div id="form">
<form method="post" action="">
<table>
<tr>
<td valign="top">
<label for="naam"><abbr lang="nl" title="Vul uw naam in aub">Naam:</abbr> *</label>
</td>
<td>
<input type="text" name="naam" id="naam" value="" />
<p class="fout " id="naamleeg">Naam is verplicht!</p>
</td>
</tr>
<tr>
<td valign="top">
<label for="email"><abbr lang="nl" title="Vul een geldig emailadres in. Bijvoorbeeld : [email protected]">Email</abbr>: *</label>
</td>
<td>
<input type="text" name="email" id="email" value=""/>
<p class="fout " id="emailleeg">Email is verplicht!</p>
<p class="fout " id="emailfout">Geldige email is verplicht!</p>
</td>
</tr>
<tr>
<td valign="top">
<label for="bericht"><abbr lang="nl" title="Vul uw aanvraag hier in aub">Bericht:</abbr> *</label>
</td>
<td>
<textarea name="bericht" id="bericht" rows="6" cols="38"></textarea>
<p class="fout " id="berichtleeg">Bericht is verplicht!</p>
</td>
</tr>
<tr>
<td valign="top">
<label for="spam"><abbr lang="nl" title="Dit is een test om te controleren of de gebruiker van dit formulier wel degelijk een mens is.">Spamcontrole</abbr>: *</label>
</td>
<td valign="top">
<span id="spamvraag">
Hoeveel is
<span id="nummer_1">
</span>
plus (+)
<span id="nummer_2">
</span> :
</span>
<input type="text" name="spam" id="spam" class="spamtext" />
<p class="fout " id="spamleeg">Spam-uitkomst is verplicht!</p>
<p class="fout " id="spamfout">Dit is niet de juiste uitkomst!</p>
</td>
</tr>
<tr>
<td valign="top"></td>
<td valign="top">
<p class="notice">Velden aangeduid met een asterisk (*) zijn verplicht in te vullen</p>
<div id="screenreaders" class="hidden">
<p>
Onderstaande velden NIET invullen indien u geen spambot bent!
Als u ze invult nemen wij aan dat u een spambot bent en zal het formulier niet verwerkt worden.
</p>
<input type="hidden" id="hid1" name="hid1" value=""/>
<input type="text" id="hid2" name="hid2" value=""/>
<input type="hidden" id="uitkomst" name="uitkomst" readonly="readonly" value="" />
</div>
</td>
</tr>
<tr>
<td valign="top">
</td>
<td valign="top">
<div id="foutdiv">
</div>
<input type="submit" value="Verzend bericht" class="button small orange" id="submit" name="submit" />
<input type="reset" value="Leeg maken" class="button small grey"/> <span id="loading"> Even geduld aub.. </span>
<p class="fout " id="verzendenfout">Er was een fout bij het versturen van de email!</p>
</td>
</tr>
</table>
</form>
</div>
<!--
Einde formulier
-->
</td></tr>
</div></div>
<tr><td class='td_valign_bottom_black'>
<div class="holder">
<table id="bottom"><tr>
<td class='width_430'><h5>Adres</h5>
<h3>naam<br/>
adres<br/>
2960 Sint-Lenaarts </h3>
</td>
<td class='width_430'><h5>Secretariaat</h5>
<h3>naam<br/>
adres<br/>
2960 Sint-Lenaarts </h3>
</td>
<td class='width_140'><h5>Contacteer ons</h5>
<h3> Tel 0000000<br/>
<br/>
<a href="mailto:[email protected]"class="hyperlink">info@mijnsite.be</a></h3>
</td>
</tr>
</table>
</div>
</td></tr>
<tr><td id='td_page_footer' class='bottom_black'>
<span id='copyright'> © By naam Sint-Lenaarts</a></span>
</td></tr>
</table>
<script src='/js/jquery-latest.min.js' type='text/javascript'></script><script>(function($,d){$.each(readyQ,function(i,f){$(f)});$.each(bindReadyQ,function(i,f){$(d).bind("ready",f)})})(jQuery,document)</script>
</body>
</html>
contactconfig.php
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
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
<?php
/*
* Configuratie van de email settings
*/
// timezone en taalinstelling
date_default_timezone_set('Europe/Brussels');
setlocale(LC_TIME, 'NL_nl');
// het emailadres naar waar het contactformulier moet verzonden worden
define("ONTVANGER","[email protected]");
// het onderwerp van de email
define("ONDERWERP","Contact via uw website");
// html emails(true) of niet(false)
define("HTMLEMAILS",true);
// Geef de maximum waarde voor de bereking van de spamuitkomst
define("MAX_CIJFER",8);
// Geef de minimum waarde voor de bereking van de spamuitkomst
define("MIN_CIJFER",2);
/*
* Configuratie van de spamsom
*/
// als de sessie variabelen nog niet gezet zijn
// genereer dan nieuwe variabelen
$_SESSION['test_uitkomst'] = null;
if($_SESSION['test_uitkomst'] == null){
// genereer het eerste random cijfer
// en zet het in de session
$random_cijfer_1 = intval(rand(MIN_CIJFER,MAX_CIJFER));
$_SESSION['random_cijfer_1'] = $random_cijfer_1;
// genereer het tweede random cijfer
// en zet het in de session
$random_cijfer_2 = intval(rand(MIN_CIJFER,MAX_CIJFER));
$_SESSION['random_cijfer_2'] = $random_cijfer_2;
// bereken de uitkomst
// en zet het in de session
$_SESSION['test_uitkomst'] = bcadd($random_cijfer_1,$random_cijfer_2);
}
?>
/*
* Configuratie van de email settings
*/
// timezone en taalinstelling
date_default_timezone_set('Europe/Brussels');
setlocale(LC_TIME, 'NL_nl');
// het emailadres naar waar het contactformulier moet verzonden worden
define("ONTVANGER","[email protected]");
// het onderwerp van de email
define("ONDERWERP","Contact via uw website");
// html emails(true) of niet(false)
define("HTMLEMAILS",true);
// Geef de maximum waarde voor de bereking van de spamuitkomst
define("MAX_CIJFER",8);
// Geef de minimum waarde voor de bereking van de spamuitkomst
define("MIN_CIJFER",2);
/*
* Configuratie van de spamsom
*/
// als de sessie variabelen nog niet gezet zijn
// genereer dan nieuwe variabelen
$_SESSION['test_uitkomst'] = null;
if($_SESSION['test_uitkomst'] == null){
// genereer het eerste random cijfer
// en zet het in de session
$random_cijfer_1 = intval(rand(MIN_CIJFER,MAX_CIJFER));
$_SESSION['random_cijfer_1'] = $random_cijfer_1;
// genereer het tweede random cijfer
// en zet het in de session
$random_cijfer_2 = intval(rand(MIN_CIJFER,MAX_CIJFER));
$_SESSION['random_cijfer_2'] = $random_cijfer_2;
// bereken de uitkomst
// en zet het in de session
$_SESSION['test_uitkomst'] = bcadd($random_cijfer_1,$random_cijfer_2);
}
?>
contactfunctions.php
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<?php
/**
Dit script is beperkt in gebruik. Het mag enkel gebruikt worden op
websites zonder commerciele doeleinden.
Licenties : http://creativecommons.org/licenses/by-nc/3.0/
Auteur : Sam Vloeberghs - http://www.samvloeberghs.be
*/
// start een sessie of zet ze voort voor de spamcheck
session_start();
// include de config
require_once('contactconfig.php');
/*
* De functie controleert een gegeven email op geldigheid
* @return bool
*/
function checkEmail($email){
// definieer het patroon voor geldige emails
$patroon = "/^[A-z0-9\._-]+". "@". "[A-z0-9][A-z0-9-]*". "(\.[A-z0-9_-]+)*". "\.([A-z]{2,6})$/";
// vergelijk het patroon met de email
// bij geldige overéénkomst return true
// bij ongeldige overéénkomst return false
return preg_match($patroon, $email) ? FALSE : TRUE;
}
/*
* Deze functie controleert een gegeven waarde op lengte
* @return bool
*/
function checkLength($waarde){
// als de gegeven waarde leeg is
// return false
if(empty($waarde)){
return true;
}
// als de gegeven waarde niet leeg is
// return true
else{
return false;
}
}
/*
* Deze functie controleert een gegeven waarde op lengte
* @return bool
*/
function checkSpam($spam,$uitkomst){
// als het gegeven spamresultaat niet overéénkom met de uitkomst
// return false;
if(md5($spam) != $uitkomst){
return true;
}
// als het gegeven spamresultaat overéénkom met de uitkomst
// return true;
else{
return false;
}
}
/*
* Deze functie switched tussen de 2 types van email ( html en plaintext )
* @return bool
*/
function verstuurMail($waarden){
// resultaat van functie
$resultaat = false;
// als de configuratie html emails toelaat
if(HTMLEMAILS){
$resultaat = sendHtmlEmail($waarden);
}
// geen html emails toegelaten
else{
$resultaat = sendPlainTextEmail($waarden);
}
// return resultaat
return $resultaat;
}
/*
* Deze functie verstuurt de HTML email
* @return bool
*/
function sendHtmlEmail($waarden){
// time stamp
$timestamp = date("\o\p j F Y \o\m G\ui");
// stel het emailbericht samen
$message = "
<html>
<head>
<title>".ONDERWERP."</title>
</head>
<body>
<p style='font-size:0.9em;border-bottom:1px solid #000;padding-bottom:10px;'></p>
<table cellpadding='0' cellspacing='0'>
<tr>
<td style='font-weight:bold;padding:0 10px 3px 0;'>Naam:</td>
<td>".$waarden['naam']."</td>
</tr>
<tr>
<td style='font-weight:bold;padding:0 10px 3px 0;'>Email:</td>
<td>".$waarden['email']."</td>
</tr>
<tr>
<td colspan='2'> </td>
</tr>
<tr>
<td colspan='2'>".$waarden['bericht']."</td>
</tr>
</table>
<p style='font-size:0.9em;border-top:1px solid #000;padding-top:10px;'>Deze email werd verstuurd $timestamp .</p>
</body>
</html>
";
// To send HTML mail, the Content-type header must be set
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
// zet de headers
$headers .= "From: " .$waarden['naam']. "<".$waarden['email'].">"."\n";
$headers .= "Reply-To: " .$waarden['naam']. "<".$waarden['email'].">";
// Mail it
return mail(ONTVANGER, ONDERWERP, $message, $headers);
}
/*
* Deze functie verstuurt de PlainText email
* @return bool
*/
function sendPlainTextEmail($waarden){
// timestamp
$timestamp = date("\o\p j F Y \o\m G\ui");
// stel het emailbericht samen
$message .= ONDERWERP."\r\n\r\n";
$message .= "Naam: ".$waarden['naam']." \r\n";
$message .= "Email: ".$waarden['email']." \r\n";
$message .= "Telefoon: ".$waarden['tel']." \r\n\r\n";
$message .= $waarden['bericht']." \r\n\r\n";
$message .= "Deze email werd verstuurd $timestap ";
// zet de headers
$headers = "From: " .$waarden['naam']. "<".$waarden['email'].">"."\n";
$headers .= "Reply-To: " .$waarden['naam']. "<".$waarden['email'].">";
// Mail it
return mail(ONTVANGER, ONDERWERP, $message, $headers);
}
?>
/**
Dit script is beperkt in gebruik. Het mag enkel gebruikt worden op
websites zonder commerciele doeleinden.
Licenties : http://creativecommons.org/licenses/by-nc/3.0/
Auteur : Sam Vloeberghs - http://www.samvloeberghs.be
*/
// start een sessie of zet ze voort voor de spamcheck
session_start();
// include de config
require_once('contactconfig.php');
/*
* De functie controleert een gegeven email op geldigheid
* @return bool
*/
function checkEmail($email){
// definieer het patroon voor geldige emails
$patroon = "/^[A-z0-9\._-]+". "@". "[A-z0-9][A-z0-9-]*". "(\.[A-z0-9_-]+)*". "\.([A-z]{2,6})$/";
// vergelijk het patroon met de email
// bij geldige overéénkomst return true
// bij ongeldige overéénkomst return false
return preg_match($patroon, $email) ? FALSE : TRUE;
}
/*
* Deze functie controleert een gegeven waarde op lengte
* @return bool
*/
function checkLength($waarde){
// als de gegeven waarde leeg is
// return false
if(empty($waarde)){
return true;
}
// als de gegeven waarde niet leeg is
// return true
else{
return false;
}
}
/*
* Deze functie controleert een gegeven waarde op lengte
* @return bool
*/
function checkSpam($spam,$uitkomst){
// als het gegeven spamresultaat niet overéénkom met de uitkomst
// return false;
if(md5($spam) != $uitkomst){
return true;
}
// als het gegeven spamresultaat overéénkom met de uitkomst
// return true;
else{
return false;
}
}
/*
* Deze functie switched tussen de 2 types van email ( html en plaintext )
* @return bool
*/
function verstuurMail($waarden){
// resultaat van functie
$resultaat = false;
// als de configuratie html emails toelaat
if(HTMLEMAILS){
$resultaat = sendHtmlEmail($waarden);
}
// geen html emails toegelaten
else{
$resultaat = sendPlainTextEmail($waarden);
}
// return resultaat
return $resultaat;
}
/*
* Deze functie verstuurt de HTML email
* @return bool
*/
function sendHtmlEmail($waarden){
// time stamp
$timestamp = date("\o\p j F Y \o\m G\ui");
// stel het emailbericht samen
$message = "
<html>
<head>
<title>".ONDERWERP."</title>
</head>
<body>
<p style='font-size:0.9em;border-bottom:1px solid #000;padding-bottom:10px;'></p>
<table cellpadding='0' cellspacing='0'>
<tr>
<td style='font-weight:bold;padding:0 10px 3px 0;'>Naam:</td>
<td>".$waarden['naam']."</td>
</tr>
<tr>
<td style='font-weight:bold;padding:0 10px 3px 0;'>Email:</td>
<td>".$waarden['email']."</td>
</tr>
<tr>
<td colspan='2'> </td>
</tr>
<tr>
<td colspan='2'>".$waarden['bericht']."</td>
</tr>
</table>
<p style='font-size:0.9em;border-top:1px solid #000;padding-top:10px;'>Deze email werd verstuurd $timestamp .</p>
</body>
</html>
";
// To send HTML mail, the Content-type header must be set
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
// zet de headers
$headers .= "From: " .$waarden['naam']. "<".$waarden['email'].">"."\n";
$headers .= "Reply-To: " .$waarden['naam']. "<".$waarden['email'].">";
// Mail it
return mail(ONTVANGER, ONDERWERP, $message, $headers);
}
/*
* Deze functie verstuurt de PlainText email
* @return bool
*/
function sendPlainTextEmail($waarden){
// timestamp
$timestamp = date("\o\p j F Y \o\m G\ui");
// stel het emailbericht samen
$message .= ONDERWERP."\r\n\r\n";
$message .= "Naam: ".$waarden['naam']." \r\n";
$message .= "Email: ".$waarden['email']." \r\n";
$message .= "Telefoon: ".$waarden['tel']." \r\n\r\n";
$message .= $waarden['bericht']." \r\n\r\n";
$message .= "Deze email werd verstuurd $timestap ";
// zet de headers
$headers = "From: " .$waarden['naam']. "<".$waarden['email'].">"."\n";
$headers .= "Reply-To: " .$waarden['naam']. "<".$waarden['email'].">";
// Mail it
return mail(ONTVANGER, ONDERWERP, $message, $headers);
}
?>
Toevoeging op 19/11/2015 21:02:01:
Als ok is, zou ik dan kunnen aanpassen dat wanneer de email is verstuurd ik een nieuwe document krijg met de tekst 'Uw bericht is succesvol verstuurd' U zal binnen de 3 sec terug naar de home page gaan?
Wat is de code hiervoor?