Contactformulier beveiligen tegen verzending van lege velden
Ik heb een website gemaakt voor de winkel van mijn vrouw, en op de html-pagina met haar contactgegevens heb ik een php-contactformulier gezet dat ik ergens op het internet vond.
Nu stel ik vast dat je dit kan verzenden ook als je niks hebt ingevuld. Kan iemand mij helpen om dit te beveiligen. Ik heb zelf weinig kaas gegeten van php, vandaar mijn postje op dit forum.
Het php bestandje mail.php ziet er zo uit :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$formcontent="From: $name \n Message: $message";
$formcontent="From: $name \n Telefoon; $phone \n Message: $message";
//verander hieronder je emailadres
$recipient = "[email protected]";
//verander hieronder evt de teksten en de html
$subject = "Aanvraag via de website van ArteShop";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "
<h3>Bedankt! Uw bericht werd goed verzonden. We nemen zo snel mogelijk contact met u op.<br />
<a href='index.html'>Terug naar de website van ArteShop</a></h3>
";
?>
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$formcontent="From: $name \n Message: $message";
$formcontent="From: $name \n Telefoon; $phone \n Message: $message";
//verander hieronder je emailadres
$recipient = "[email protected]";
//verander hieronder evt de teksten en de html
$subject = "Aanvraag via de website van ArteShop";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "
<h3>Bedankt! Uw bericht werd goed verzonden. We nemen zo snel mogelijk contact met u op.<br />
<a href='index.html'>Terug naar de website van ArteShop</a></h3>
";
?>
En het html-bestand contact.html ziet er zo uit :
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" name="keywords" content="ArteShop, lederwaren, juwelen, jewels, bags, fashion">
<title>Arte Shop</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<style type="text/css">
<!--
.style5 {font-family: Arial, Helvetica, sans-serif}
.style6 {color: #333333}
.style3 {
color: #333333;
font-family: Arial, Helvetica, sans-serif;
font-size: 13px;
font-weight: bold;
}
.style7 {font-size: 12px}
.style12 {font-weight: bold}
.style14 {color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 20px; font-weight: bold; }
-->
</style>
</head>
<body>
<div class="header" style="display:block;">
<div>
<img src="images/logoarteshop2.png" alt="" width="327">
<ul>
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="about.html">About</a>
</li>
<li>
<a href="#">Collections</a>
<ul>
<li>
<a href="jewels.html">Jewels</a>
</li>
<li>
<a href="handbags.html">Bags</a>
</li>
<li>
<a href="fashion.html">Fashion</a>
</li>
</ul>
</li>
<li>
<a href="shop.html">Shop</a>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
</div>
</div>
<div class="body">
<div>
<div class="collections">
<div class="navigation">
<ul>
<li class="selected">
<a href="#">CONTACT ARTESHOP</a>
</li>
</ul>
</div>
<div>
<table width="100%" height="100%" border="0">
<tr>
<td height="86" colspan="5"><div align="center"><span class="style14"><br>ARTESHOP- Straat 12 - 9999 De Gemeente- Tel. 059 99 99 99</span></div></td>
</tr>
</table>
<table width="100%" height="100%" border="0">
<tr>
<td width="266" rowspan="10"><img src="images/figure34.jpg" alt="" width="218" style="border:1px solid white"></td>
<td> </td>
<td colspan="3"><span class="style3">OPENINGSUREN </span></td>
</tr>
<tr>
<td> </td>
<td colspan="3"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td colspan="2"> </td>
</tr>
<tr>
<td width="8"> </td>
<td width="143"><span class="style7 style6 style5 style12"><strong>Maandag</strong></span></td>
<td colspan="2"><span class="style7 style6 style5"><strong>gesloten</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Dinsdag</strong></span></td>
<td width="135"><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td width="370"><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Woensdag</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Donderdag</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Vrijdag</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Zaterdag</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Zondag</strong></span></td>
<td colspan="2"><span class="style7 style6 style5 style2"><strong>10:00-13:00 (enkel tijdens schoolvakanties)</strong></span></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td colspan="2"> </td>
</tr>
<tr>
<td height="86" colspan="5"><div align="center"><span class="style3"><br>
Hebt u een vraag, een klacht of een opmerking ? ArteShop staat klaar om ze te beantwoorden. <br>
U kunt ons bereiken per telefoon of door gebruik te maken van onderstaand contactformulier.</span></div></td>
</tr>
</table>
<style>
input, textarea {
padding:5px;
border:2px solid #ccc;
border-radius: 5px;
width="60";
font:12px Verdana;
margin-bottom:10px;
}
input[type=submit] {
padding:5px 15px;
background:#ccc;
border:0 none;
cursor:pointer;
width:100px;
border-radius: 5px; }
input[type=submit]:active {
padding:5px 15px;
background:#cdc;
}
</style>
<form name="contactform" method="post" action="mail.php">
<div align="center">
<input type="text" name="name" placeholder="Naam" size="60"/>
<br />
<input type="email" name="email" placeholder="Email" size="60"/>
<br />
<input type="text" name="phone" placeholder="Telefoonnummer" size="60"/>
<br />
<textarea name="message" placeholder="Bericht" cols="60" rows="6"></textarea>
<br />
<br />
<input type="submit" value="Verzenden" />
</div>
</form>
<table width="870" height="49%" border="0">
<tr>
<td width="614"><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2496.132492806767!2d3.0341832000000113!3d51.27188020000002!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47dcaafb4d232d9b%3A0x6d658c1be745677e!2sArte+Mio!5e0!3m2!1snl!2sbe!4v1440675281009" width="100%" height="349" frameborder="0" style="border:1px solid white" allowfullscreen></iframe></t>
<td width="22">
<td width="220"> <img src="images/figure5.jpg" width="218" height="349" style="border:1px solid white">
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="footer">
<div>
<p>
© 2015 DIRK DE COSTER</p>
<div class="connect"> <a href="index.html" id="facebook">Facebook</a> <a href="https://www.google.be/maps/place/Arte+Shop/@51.2719902,3.0341832,17z/data=!3m1!4b1!4m2!3m1!1s0x47dcaafb4d232d9b:0x6d568c1be745677e" id="googleplus">Google+</a>
</div>
</div>
</div>
</body>
</html>
<html>
<head>
<meta charset="UTF-8" name="keywords" content="ArteShop, lederwaren, juwelen, jewels, bags, fashion">
<title>Arte Shop</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<style type="text/css">
<!--
.style5 {font-family: Arial, Helvetica, sans-serif}
.style6 {color: #333333}
.style3 {
color: #333333;
font-family: Arial, Helvetica, sans-serif;
font-size: 13px;
font-weight: bold;
}
.style7 {font-size: 12px}
.style12 {font-weight: bold}
.style14 {color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 20px; font-weight: bold; }
-->
</style>
</head>
<body>
<div class="header" style="display:block;">
<div>
<img src="images/logoarteshop2.png" alt="" width="327">
<ul>
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="about.html">About</a>
</li>
<li>
<a href="#">Collections</a>
<ul>
<li>
<a href="jewels.html">Jewels</a>
</li>
<li>
<a href="handbags.html">Bags</a>
</li>
<li>
<a href="fashion.html">Fashion</a>
</li>
</ul>
</li>
<li>
<a href="shop.html">Shop</a>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
</ul>
</div>
</div>
<div class="body">
<div>
<div class="collections">
<div class="navigation">
<ul>
<li class="selected">
<a href="#">CONTACT ARTESHOP</a>
</li>
</ul>
</div>
<div>
<table width="100%" height="100%" border="0">
<tr>
<td height="86" colspan="5"><div align="center"><span class="style14"><br>ARTESHOP- Straat 12 - 9999 De Gemeente- Tel. 059 99 99 99</span></div></td>
</tr>
</table>
<table width="100%" height="100%" border="0">
<tr>
<td width="266" rowspan="10"><img src="images/figure34.jpg" alt="" width="218" style="border:1px solid white"></td>
<td> </td>
<td colspan="3"><span class="style3">OPENINGSUREN </span></td>
</tr>
<tr>
<td> </td>
<td colspan="3"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td colspan="2"> </td>
</tr>
<tr>
<td width="8"> </td>
<td width="143"><span class="style7 style6 style5 style12"><strong>Maandag</strong></span></td>
<td colspan="2"><span class="style7 style6 style5"><strong>gesloten</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Dinsdag</strong></span></td>
<td width="135"><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td width="370"><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Woensdag</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Donderdag</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Vrijdag</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Zaterdag</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>10:00-12:30</strong></span></td>
<td><span class="style7 style6 style5 style2"><strong>14:00-18:00</strong></span></td>
</tr>
<tr>
<td> </td>
<td><span class="style7 style6 style5 style2"><strong>Zondag</strong></span></td>
<td colspan="2"><span class="style7 style6 style5 style2"><strong>10:00-13:00 (enkel tijdens schoolvakanties)</strong></span></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td colspan="2"> </td>
</tr>
<tr>
<td height="86" colspan="5"><div align="center"><span class="style3"><br>
Hebt u een vraag, een klacht of een opmerking ? ArteShop staat klaar om ze te beantwoorden. <br>
U kunt ons bereiken per telefoon of door gebruik te maken van onderstaand contactformulier.</span></div></td>
</tr>
</table>
<style>
input, textarea {
padding:5px;
border:2px solid #ccc;
border-radius: 5px;
width="60";
font:12px Verdana;
margin-bottom:10px;
}
input[type=submit] {
padding:5px 15px;
background:#ccc;
border:0 none;
cursor:pointer;
width:100px;
border-radius: 5px; }
input[type=submit]:active {
padding:5px 15px;
background:#cdc;
}
</style>
<form name="contactform" method="post" action="mail.php">
<div align="center">
<input type="text" name="name" placeholder="Naam" size="60"/>
<br />
<input type="email" name="email" placeholder="Email" size="60"/>
<br />
<input type="text" name="phone" placeholder="Telefoonnummer" size="60"/>
<br />
<textarea name="message" placeholder="Bericht" cols="60" rows="6"></textarea>
<br />
<br />
<input type="submit" value="Verzenden" />
</div>
</form>
<table width="870" height="49%" border="0">
<tr>
<td width="614"><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2496.132492806767!2d3.0341832000000113!3d51.27188020000002!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47dcaafb4d232d9b%3A0x6d658c1be745677e!2sArte+Mio!5e0!3m2!1snl!2sbe!4v1440675281009" width="100%" height="349" frameborder="0" style="border:1px solid white" allowfullscreen></iframe></t>
<td width="22">
<td width="220"> <img src="images/figure5.jpg" width="218" height="349" style="border:1px solid white">
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="footer">
<div>
<p>
© 2015 DIRK DE COSTER</p>
<div class="connect"> <a href="index.html" id="facebook">Facebook</a> <a href="https://www.google.be/maps/place/Arte+Shop/@51.2719902,3.0341832,17z/data=!3m1!4b1!4m2!3m1!1s0x47dcaafb4d232d9b:0x6d568c1be745677e" id="googleplus">Google+</a>
</div>
</div>
</div>
</body>
</html>
Voor alle duidelijkheid : ik heb hier en daar wat gegevens (mail adres - telefoonnummer, etc ...) gewijzigd in dit script om de privacy te bewaren.
Hopelijk kan iemand mij helpen ?
Alvast bedankt,
Dirk
- 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 10/03/2016 15:25:54 door - Ariën -
Verder zou ik de structuur aanpassen, en eerst kijken of het formulier verstuurd is via POST:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
// er is gepost, voer hier de invoercontrole(s) uit
// als deze gepasseerd zijn, dan kan je de mail versturen
}
?>
if($_SERVER['REQUEST_METHOD']=="POST") {
// er is gepost, voer hier de invoercontrole(s) uit
// als deze gepasseerd zijn, dan kan je de mail versturen
}
?>
Verder zou ik ook even kijken naar de juiste mailheaders:
http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders
Gewijzigd op 10/03/2016 15:39:37 door - Ariën -
Moet ik dit script dan opnemen in mijn php-code ?
Gewijzigd op 10/03/2016 15:50:46 door - Ariën -
Groeten,
Dirk
Het is een simpele validatie zonder controle op de soort invoer.
Verder is het script ongetest... ;-)
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
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
<?php
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'Mijn Site';
// Jouw eigen geldige emailadres
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
// Een geldig emailadres voor errors
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
// De naam van de verzender
$naam_verzender = 'Afzender';
// Het geldige emailadres van de afzender
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = 'geldig_emailadres@geldig_domein.nl';
// HTML mail? True/False
$html = true;
if($_SERVER['REQUEST_METHOD']=="POST") { // controleer hier of het formulier verstuurd is via de POST-method
$errors = array(); // we initialiseren een array met de foutmeldingen!
if(trim($_POST['name']) == "") {
$errors[] = "Er is geen naam ingevuld";
}
if(trim($_POST['email']) == "") {
$errors[] = "Er is geen email ingevuld";
}
if(trim($_POST['phone']) == "") {
$errors[] = "Er is geen telefoonnummer ingevuld";
}
if(trim($_POST['message']) == "") {
$errors[] = "Er is geen bericht ingevuld";
}
if(count($errors)>0) { // er zijn één of meerdere errors
echo 'De volgende fouten zijn opgetreden:<ul>';
foreach($errors as $error) {
echo "<li>".$error."</li>".PHP_EOL;
}
echo '</ul>';
} else {
// alle validaties zijn goed, we kunnen hier mailen
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
$message =
"Bericht: ".$_POST['message'].PHP_EOL .
"Telefoon :".$_POST['phone'].PHP_EOL .
"Naam: ".$_POST['name'];
if(mail($eigen_emailadres, "Een bericht vanaf je contactformulier", $message, $headers)) {
echo "De mail is verzonden";
} else {
echo "De mail is niet verzonden, mogelijk vanwege een configuratiefout";
}
}
}
?>
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'Mijn Site';
// Jouw eigen geldige emailadres
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
// Een geldig emailadres voor errors
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
// De naam van de verzender
$naam_verzender = 'Afzender';
// Het geldige emailadres van de afzender
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = 'geldig_emailadres@geldig_domein.nl';
// HTML mail? True/False
$html = true;
if($_SERVER['REQUEST_METHOD']=="POST") { // controleer hier of het formulier verstuurd is via de POST-method
$errors = array(); // we initialiseren een array met de foutmeldingen!
if(trim($_POST['name']) == "") {
$errors[] = "Er is geen naam ingevuld";
}
if(trim($_POST['email']) == "") {
$errors[] = "Er is geen email ingevuld";
}
if(trim($_POST['phone']) == "") {
$errors[] = "Er is geen telefoonnummer ingevuld";
}
if(trim($_POST['message']) == "") {
$errors[] = "Er is geen bericht ingevuld";
}
if(count($errors)>0) { // er zijn één of meerdere errors
echo 'De volgende fouten zijn opgetreden:<ul>';
foreach($errors as $error) {
echo "<li>".$error."</li>".PHP_EOL;
}
echo '</ul>';
} else {
// alle validaties zijn goed, we kunnen hier mailen
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
$message =
"Bericht: ".$_POST['message'].PHP_EOL .
"Telefoon :".$_POST['phone'].PHP_EOL .
"Naam: ".$_POST['name'];
if(mail($eigen_emailadres, "Een bericht vanaf je contactformulier", $message, $headers)) {
echo "De mail is verzonden";
} else {
echo "De mail is niet verzonden, mogelijk vanwege een configuratiefout";
}
}
}
?>
Gewijzigd op 11/03/2016 12:27:51 door - Ariën -
Alvast bedankt voor je hulp.
Groeten,
Dirk
Daarnaast zou ik het mailformulier op zijn minst beveiligen met een (CSRF) token, zodat dit formulier niet vanaf een andere website verstuurd kan worden. Of meteen voor een oplossing gaan met een CAPTCHA functionaliteit.
Bij het afwezig zijn van een van twee, of beide, bovenstaande voorzieningen is je formulier mogelijk nog steeds gevoelig voor misbruik.
Ook wordt de formulierdata in het bovenstaande voorbeeld voor het grootste deel niet doorgegeven, enkel "message"?
:/
Het ging mij even om een simpel voorbeeld. Het laatste heb ik in ieder geval aangepast. Gewoon een foutje van mij, geen ':/' voor nodig ;-)
Maar als ik één van de velden niet invulde dan kwam ik op de pagina http://ArteShop/mail.php terecht, een blanco webpagina. Er werd geen mail verstuurd, dat is goed, maar is het niet mogelijk om ergens een pop-up in te bouwen die zegt dat je "alle velden moet invullen" ?
Groeten,
Dirk
Verder zijn popups niet meer van de tijd, en is het beter om ze te verzamelen.
Ariën, ik ben efkes niet mee. Waar moet ik die </ul> dan zetten ?
Na de foreachlus op lijn 33
Parse error: syntax error, unexpected '<' in /home/arteshop/www/mail.php on line 33
Gokje: Je plaatst HTML in PHP, wat niet zomaar kan.. Kijk eens een paar regels hoger naar hoe het wel moet.
Kan je die foreachlus eens uitschrijven voor mij ?
Quae nocent docent !
Code (php)
1
2
3
4
5
2
3
4
5
echo "De volgende fouten zijn opgetreden:<ul>";
foreach($errors as $error) {
echo "<li>".$error."</li>".PHP_EOL;
}
echo '</ul>';
foreach($errors as $error) {
echo "<li>".$error."</li>".PHP_EOL;
}
echo '</ul>';
HTML hoort in een echo (zoals hier), of buiten je PHP-tags.
Al eens gedacht aan een PHP-cursus? ;-)
Gewijzigd op 11/03/2016 10:47:08 door - Ariën -
Oké, bedankt Ariën. Ik heb dit nu aangepast. Het resultaat is weliswaar hetzelfde : van zodra ik 1 veld niet invul, kom ik op een blanco pagina terecht. Kan ik op deze pagina ergens een berichtje opnemen dat niet alle velden ingevuld zijn ? Net zoals ik een berichtje heb opgenomen dat de mail goed verzonden is ?
Zet na lijn 18 anders eens dit neer:
Dan zie je in ieder geval welke velden er worden meegenomen door het formulier.
Update: heb net even de code uit mijn post hierboven aangepast, en heb alle ifelse'jes bij de validatie herschreven naar if. Anders zie je ze alsnog niet allemaal als er meerdere validatiefouten zijn.
Gewijzigd op 11/03/2016 11:10:29 door - Ariën -
Array
(
[name] =>
=>
[phone] =>
[message] =>
)
De volgende fouten zijn opgetreden:
Er is geen naam ingevuld
Er is geen email ingevuld
Er is geen telefoonnummer ingevuld
Er is geen bericht ingevuld
MAAR als ik alle velden invul dan krijg ik deze melding (lichtjes aangepast) in een nieuw tabblad :
Array
(
[name] => Dirk De Coster
[email] => [email protected]
[phone] => +32489995999
[message] => 3de poging
)
Je moet dan ook een bericht zien of de mail wel/niet verstuurd is.