Formulier geeft foutmelding die ik niet kan vinden
Onderaan vinden jullie een script.
Dit script moet een aantal stappen doorlopen om te kijken of het goed is.
Maar ergens gaat het fout en krijg ik de melding dat: "U bent uw naam, e-mailadres, adres of stickerkeuze vergeten in te vullen."
Ik heb het script met mijn verstand een aantal keren nagelopen.... Ik kan het probleem echt niet vinden.
Waar gaat het fout?
Ik hoor graag van jullie wat ik anders moet doen....
Alvast hartelijk dank voor het bekijken van het script.
Groet en wellicht voor sommige zo, slaap lekker.
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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
<style type="text/css">
.letop {
color: #F00;
}
</style>
<?php
//session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
/*******************************
* CONTACT FORMULIER *
* contactformulier.php *
* *
* Author: Miranda Verburg *
* Datum: 10 september 2010 *
* *
* Pas het e-mail adres aan *
* bij $mail_ontv en upload *
* het naar je webserver.. *
********************************/
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]' . ','; // <<<----- voer jouw e-mailadres hier in!
$mail_ontv2 = ($_POST['email']); // <<<----- Dit is het emailadres van de bestellende!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 120; // 120 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood =1 ;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['email']) || empty($_POST['stickerkeus']) || !empty($email_fout) || empty($_POST['telefoon']) || empty($_POST['adres']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, adres of stickerkeuze vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '
Prijzen zijn exclusief verzend kosten van een postzegel! ';
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<table width="600" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="200"><label for="naam">Naam:</label></td>
<td width="200"><input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /></td>
<td width="200"> </td>
</tr>
<tr>
<td><label for="adres">Adres:<label></td>
<td><input type="text" id="adres" name="adres" value="' . (isset($_POST['adres']) ? htmlspecialchars($_POST['adres']) : '') . '"/></td>
<td> </td>
</tr>
<tr>
<td><label for="postcode">Postcode:</label></td>
<td><input type="text" id="postcode" name="postcode" value="' . (isset($_POST['postcode']) ? htmlspecialchars($_POST['postcode']) : '') . '"/></td>
<td> </td>
</tr>
<tr>
<td><label for="woonplaats">Woonplaats:</label></td>
<td><input type="text" id="woonplaats" name="woonplaats" value="' . (isset($_POST['woonplaats']) ? htmlspecialchars($_POST['woonplaats']) : '') . '"/></td>
<td> </td>
</tr>
<tr>
<td><label for="email">E-mail:</label></td>
<td><input type="text" id="email" name="email" value="' . (isset($_POST['email']) ? htmlspecialchars($_POST['email']) : '') . '" /></td>
<td> </td>
</tr>
<tr>
<td><label for="telefoon">Telefoon:</label></td>
<td><input type="text" id="telefoon" name="telefoon" value="' . (isset($_POST['telefoon']) ? htmlspecialchars($_POST['telefoon']) : '') . '" /></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><div align="center">MEET MY BIKE</div></td>
<td><div align="center">
<p>MEET MY BIKE <br />
SINCE 2014 </p>
</div></td>
<td><div align="center">MEET MY BIKE<br />
JOIN OUR RIDE-OUTS</div></td>
</tr>
<tr>
<td><div align="center"><img src="http://meetmybike.nl/wp-content/uploads/2016/01/Meet-My-Bike-Logo-Sticker-Clean.jpg" alt="" width="126" height="105" /></div></td>
<td><div align="center"><img src="http://meetmybike.nl/wp-content/uploads/2016/01/Meet-My-Bike-Logo-Sticker-Since.jpg" alt="" width="126" height="105" /></div></td>
<td><div align="center"><img src="http://meetmybike.nl/wp-content/uploads/2016/01/Meet-My-Bike-Logo-Sticker-01-16.jpg" alt="" width="126" height="105" /></div></td>
</tr>
<tr>
<td><div align="center">5cm</div></td>
<td><div align="center">5cm</div></td>
<td><div align="center">5cm</div></td>
</tr>
<tr>
<td><div align="center">
<select name="aantal5c">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal5s">
<option selected="selected"value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal5joro">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
</tr>
<tr>
<td><div align="center">10cm</div></td>
<td><div align="center">10cm</div></td>
<td><div align="center">10cm</div></td>
</tr>
<tr>
<td><div align="center">
<select name="aantal10c">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal10s">
<option selected="selected"value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal10joro">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
</tr>
<tr>
<td><div align="center">15cm</div></td>
<td><div align="center">15cm</div></td>
<td><div align="center">15cm</div></td>
</tr>
<tr>
<td><div align="center">
<select name="aantal15c">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal15s">
<option selected="selected"value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal15joro">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
</tr>
</table>
<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "BAM!!! " . htmlspecialchars($_POST['naam']) ." wilt Stickers bestellen! \n" /*. $_SERVER['HTTP_HOST'] . ""*/;
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "Adres: " . htmlspecialchars($_POST['adres']) . "\n";
$inhoud_mail .= "Postcode:" .htmlspecialchars($_POST['postcode']) ."\n";
$inhoud_mail .= "Woonplaats:" .htmlspecialchars($_POST['woonplaat']) ."\n";
$inhoud_mail .= "Mail: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail .= "Telefoon: " . htmlspecialchars($_POST['telefoon']) . "\n";
$inhoud_mail .= "Stickers: " .htmlspecialchars($_POST['']) . "\n";
$inhoud_mail .= "Verstuurd op " . $datum . " \n\n";
$inhoud_mail .= "===================================================\n\n";
// -------------------- via het IP adres " . $_SERVER['REMOTE_ADDR'] . "
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['email'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv, 'Bestelling Stickers', $inhoud_mail, $headers))
$datum = date('d/m/Y H:i:s');
$inhoud_mail2 = "===================================================\n";
$inhoud_mail2 .= "De bestelling is geplaatst! \n" /*. $_SERVER['HTTP_HOST'] . ""*/;
$inhoud_mail2 .= "===================================================\n\n";
$inhoud_mail2 .= "Beste " . htmlspecialchars($_POST['naam']) .",\n";
$inhoud_mail2 .= "Hartelijk bedankt voor de bestelling.\n";
$inhoud_mail2 .= "Graag vragen we om onderstaande informatie even te controleren.\n";
$inhoud_mail2 .= "Mochten er fouten in zitten kun je contact opnemen met [email protected].\n\n";
$inhoud_mail2 .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail2 .= "E-mail adres: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail2 .= "Telefoonnummer: " . htmlspecialchars($_POST['telefoonnummer']) . "\n";
$inhoud_mail2 .= "Adres: " . htmlspecialchars($_POST['adres']) . "\n";
$inhoud_mail2 .= "Stickers: " .htmlspecialchars($_POST['']) . "\n";
$inhoud_mail2 .= "Kloppen alle gegevens? Dan mag je op volgend rekeningnummer het bedrag van € 40,95 overmaken:\n";
$inhoud_mail2 .= " tnv Almere ovv Hoodie en je naam.\n\n";
$inhoud_mail2 .= "Met vriendelijke groet,\n";
$inhoud_mail2 .= " \n";
$inhoud_mail2 .= "Meet My Bike\n\n";
$inhoud_mail2 .= "Verstuurd op " . $datum . " \n\n";
$inhoud_mail2 .= "===================================================\n\n";
// -------------------- via het IP adres " . $_SERVER['REMOTE_ADDR'] . "
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['email'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv2, 'Bestelling Hoodie', $inhoud_mail2, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Je bestelling is verzonden</h1>
<p>Bedankt voor het bestellen van je Stickers!! We zullen zo spoedig mogelijk contact met je opnemen.</p>';
}
else
{
echo '<h1>Helaas, je bestelling is niet verzonden</h1>
<p><b>Onze excuses.</b> Je bestelling kon om technische redenen niet verzonden worden.</p>';
}
}
?>
.letop {
color: #F00;
}
</style>
<?php
//session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
/*******************************
* CONTACT FORMULIER *
* contactformulier.php *
* *
* Author: Miranda Verburg *
* Datum: 10 september 2010 *
* *
* Pas het e-mail adres aan *
* bij $mail_ontv en upload *
* het naar je webserver.. *
********************************/
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]' . ','; // <<<----- voer jouw e-mailadres hier in!
$mail_ontv2 = ($_POST['email']); // <<<----- Dit is het emailadres van de bestellende!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 120; // 120 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood =1 ;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['email']) || empty($_POST['stickerkeus']) || !empty($email_fout) || empty($_POST['telefoon']) || empty($_POST['adres']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, adres of stickerkeuze vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '
Prijzen zijn exclusief verzend kosten van een postzegel! ';
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<table width="600" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="200"><label for="naam">Naam:</label></td>
<td width="200"><input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /></td>
<td width="200"> </td>
</tr>
<tr>
<td><label for="adres">Adres:<label></td>
<td><input type="text" id="adres" name="adres" value="' . (isset($_POST['adres']) ? htmlspecialchars($_POST['adres']) : '') . '"/></td>
<td> </td>
</tr>
<tr>
<td><label for="postcode">Postcode:</label></td>
<td><input type="text" id="postcode" name="postcode" value="' . (isset($_POST['postcode']) ? htmlspecialchars($_POST['postcode']) : '') . '"/></td>
<td> </td>
</tr>
<tr>
<td><label for="woonplaats">Woonplaats:</label></td>
<td><input type="text" id="woonplaats" name="woonplaats" value="' . (isset($_POST['woonplaats']) ? htmlspecialchars($_POST['woonplaats']) : '') . '"/></td>
<td> </td>
</tr>
<tr>
<td><label for="email">E-mail:</label></td>
<td><input type="text" id="email" name="email" value="' . (isset($_POST['email']) ? htmlspecialchars($_POST['email']) : '') . '" /></td>
<td> </td>
</tr>
<tr>
<td><label for="telefoon">Telefoon:</label></td>
<td><input type="text" id="telefoon" name="telefoon" value="' . (isset($_POST['telefoon']) ? htmlspecialchars($_POST['telefoon']) : '') . '" /></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><div align="center">MEET MY BIKE</div></td>
<td><div align="center">
<p>MEET MY BIKE <br />
SINCE 2014 </p>
</div></td>
<td><div align="center">MEET MY BIKE<br />
JOIN OUR RIDE-OUTS</div></td>
</tr>
<tr>
<td><div align="center"><img src="http://meetmybike.nl/wp-content/uploads/2016/01/Meet-My-Bike-Logo-Sticker-Clean.jpg" alt="" width="126" height="105" /></div></td>
<td><div align="center"><img src="http://meetmybike.nl/wp-content/uploads/2016/01/Meet-My-Bike-Logo-Sticker-Since.jpg" alt="" width="126" height="105" /></div></td>
<td><div align="center"><img src="http://meetmybike.nl/wp-content/uploads/2016/01/Meet-My-Bike-Logo-Sticker-01-16.jpg" alt="" width="126" height="105" /></div></td>
</tr>
<tr>
<td><div align="center">5cm</div></td>
<td><div align="center">5cm</div></td>
<td><div align="center">5cm</div></td>
</tr>
<tr>
<td><div align="center">
<select name="aantal5c">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal5s">
<option selected="selected"value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal5joro">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
</tr>
<tr>
<td><div align="center">10cm</div></td>
<td><div align="center">10cm</div></td>
<td><div align="center">10cm</div></td>
</tr>
<tr>
<td><div align="center">
<select name="aantal10c">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal10s">
<option selected="selected"value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal10joro">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
</tr>
<tr>
<td><div align="center">15cm</div></td>
<td><div align="center">15cm</div></td>
<td><div align="center">15cm</div></td>
</tr>
<tr>
<td><div align="center">
<select name="aantal15c">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal15s">
<option selected="selected"value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
<td><div align="center">
<select name="aantal15joro">
<option selected="selected" value=" ">Selecteer aantal</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="meer dan 5">5+</option>
</select>
</div></td>
</tr>
</table>
<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "BAM!!! " . htmlspecialchars($_POST['naam']) ." wilt Stickers bestellen! \n" /*. $_SERVER['HTTP_HOST'] . ""*/;
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "Adres: " . htmlspecialchars($_POST['adres']) . "\n";
$inhoud_mail .= "Postcode:" .htmlspecialchars($_POST['postcode']) ."\n";
$inhoud_mail .= "Woonplaats:" .htmlspecialchars($_POST['woonplaat']) ."\n";
$inhoud_mail .= "Mail: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail .= "Telefoon: " . htmlspecialchars($_POST['telefoon']) . "\n";
$inhoud_mail .= "Stickers: " .htmlspecialchars($_POST['']) . "\n";
$inhoud_mail .= "Verstuurd op " . $datum . " \n\n";
$inhoud_mail .= "===================================================\n\n";
// -------------------- via het IP adres " . $_SERVER['REMOTE_ADDR'] . "
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['email'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv, 'Bestelling Stickers', $inhoud_mail, $headers))
$datum = date('d/m/Y H:i:s');
$inhoud_mail2 = "===================================================\n";
$inhoud_mail2 .= "De bestelling is geplaatst! \n" /*. $_SERVER['HTTP_HOST'] . ""*/;
$inhoud_mail2 .= "===================================================\n\n";
$inhoud_mail2 .= "Beste " . htmlspecialchars($_POST['naam']) .",\n";
$inhoud_mail2 .= "Hartelijk bedankt voor de bestelling.\n";
$inhoud_mail2 .= "Graag vragen we om onderstaande informatie even te controleren.\n";
$inhoud_mail2 .= "Mochten er fouten in zitten kun je contact opnemen met [email protected].\n\n";
$inhoud_mail2 .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail2 .= "E-mail adres: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail2 .= "Telefoonnummer: " . htmlspecialchars($_POST['telefoonnummer']) . "\n";
$inhoud_mail2 .= "Adres: " . htmlspecialchars($_POST['adres']) . "\n";
$inhoud_mail2 .= "Stickers: " .htmlspecialchars($_POST['']) . "\n";
$inhoud_mail2 .= "Kloppen alle gegevens? Dan mag je op volgend rekeningnummer het bedrag van € 40,95 overmaken:\n";
$inhoud_mail2 .= " tnv Almere ovv Hoodie en je naam.\n\n";
$inhoud_mail2 .= "Met vriendelijke groet,\n";
$inhoud_mail2 .= " \n";
$inhoud_mail2 .= "Meet My Bike\n\n";
$inhoud_mail2 .= "Verstuurd op " . $datum . " \n\n";
$inhoud_mail2 .= "===================================================\n\n";
// -------------------- via het IP adres " . $_SERVER['REMOTE_ADDR'] . "
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['email'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv2, 'Bestelling Hoodie', $inhoud_mail2, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Je bestelling is verzonden</h1>
<p>Bedankt voor het bestellen van je Stickers!! We zullen zo spoedig mogelijk contact met je opnemen.</p>';
}
else
{
echo '<h1>Helaas, je bestelling is niet verzonden</h1>
<p><b>Onze excuses.</b> Je bestelling kon om technische redenen niet verzonden worden.</p>';
}
}
?>
Gewijzigd op 01/02/2016 00:20:01 door Steven T
Zo te zien heb je geen veld genaamd "stickerkeus".
Ben van Velzen op 01/02/2016 00:23:37:
Zo te zien heb je geen veld genaamd "stickerkeus".
Wauw.... Soms is het te makkelijk..... Zit er al te lang aan denk ik.....
Dat was inderdaad de fout. Deze controle er maar uitgehaald.
Nu er nog voor zorgen dat de keuzes ook daadwerkelijk doorkomen.
Hartelijk dank voor de snelle reactie!!!
1. Kijk wat de melding oplevert
2. Volg variabelen die niet direct extern zijn tot externe variabelen
3. Vergelijk de externe variabelen met het formulier dat binnen komt
Als je niet even de HTML kunt vergelijken kun je ook altijd print_r of var_dump op $_POST doen.
En zelf dacht ik dat ik het ook zo gedaan had en ook die stickerkeuze erin had.
Maar nog niet verder gekoppeld blijkbaar.....
Correct, een simpele ctrl+f op "stickerkeus" gaf maar 1 resultaat, en dat maakt het dan al vrij snel duidelijk. :)
Denk dat ik later nog wel een ander topic ga openen om mn keuzes door te krijgen.
Want dat, dat gaat denk ik mij een stapje te ver. Maar hopelijk ook niet.
Fijne avond! En dank je wel voor de uitleg en de oplossing uiteraard!
op regel 7 staat session-start. Je hebt door dat je inmiddels iets erboven hebt staan?
regel 23: je gebruikt $_POST, maar pas later staat een if($_SERVER['REQUEST_METHOD'] == 'POST') (meermaals)
Je zou hier dus een warning moeten krijgen als je dit aanroept met GET.
Je controleert nergens of dit veld een mailadres (eentje) bevat. Maar je stuurt er wel een mail heen.
Dat betekent dus dat iemand daar ook 2 of 100 adressen in kan zetten. Of enters opneemt en dan fijn zijn eigen headers kan toevoegen, subject overrulen en fijn spam gaat versturen op jouw rekening.
regel 292: mist daar niet een { ?
Wat levert de actie rond regel 337 op?
Je past daar $_POST['onderwerp'] aan, mi. bad-practice want dat zou puur de invoer moeten bevatten, maar dat wordt nergens meer gebruikt.
En de anti-flood in session:
Als je dit wilt misbruiken, dan stuur je uiteraard geen session-cookies mee, want dat run je dan niet vanaf de webpagina in een browser, maar direct vanaf de commandline.
Ivo P op 01/02/2016 11:15:20:
vragen (los van je probleem)
op regel 7 staat session-start. Je hebt door dat je inmiddels iets erboven hebt staan?
regel 23: je gebruikt $_POST, maar pas later staat een if($_SERVER['REQUEST_METHOD'] == 'POST') (meermaals)
Je zou hier dus een warning moeten krijgen als je dit aanroept met GET.
Je controleert nergens of dit veld een mailadres (eentje) bevat. Maar je stuurt er wel een mail heen.
Dat betekent dus dat iemand daar ook 2 of 100 adressen in kan zetten. Of enters opneemt en dan fijn zijn eigen headers kan toevoegen, subject overrulen en fijn spam gaat versturen op jouw rekening.
regel 292: mist daar niet een { ?
Wat levert de actie rond regel 337 op?
Je past daar $_POST['onderwerp'] aan, mi. bad-practice want dat zou puur de invoer moeten bevatten, maar dat wordt nergens meer gebruikt.
En de anti-flood in session:
Als je dit wilt misbruiken, dan stuur je uiteraard geen session-cookies mee, want dat run je dan niet vanaf de webpagina in een browser, maar direct vanaf de commandline.
op regel 7 staat session-start. Je hebt door dat je inmiddels iets erboven hebt staan?
regel 23: je gebruikt $_POST, maar pas later staat een if($_SERVER['REQUEST_METHOD'] == 'POST') (meermaals)
Je zou hier dus een warning moeten krijgen als je dit aanroept met GET.
Je controleert nergens of dit veld een mailadres (eentje) bevat. Maar je stuurt er wel een mail heen.
Dat betekent dus dat iemand daar ook 2 of 100 adressen in kan zetten. Of enters opneemt en dan fijn zijn eigen headers kan toevoegen, subject overrulen en fijn spam gaat versturen op jouw rekening.
regel 292: mist daar niet een { ?
Wat levert de actie rond regel 337 op?
Je past daar $_POST['onderwerp'] aan, mi. bad-practice want dat zou puur de invoer moeten bevatten, maar dat wordt nergens meer gebruikt.
En de anti-flood in session:
Als je dit wilt misbruiken, dan stuur je uiteraard geen session-cookies mee, want dat run je dan niet vanaf de webpagina in een browser, maar direct vanaf de commandline.
Ivo,
Als jij :
Bedoeld, dit kwam van een ander script. En is alleen maar een CSS wat in mijn inziens geen kwaad kan dat die daarboven staat.
In het huidige script wel weg gehaald, heeft geen toegevoegde waarde (thanks).
Op al je ander vragen..... Ik gebruik dit formulier al een langere tijd en kan niet de inhoud overal plaatsen wat er staat.
Ik kan het redelijk aanpassen (en geef toe) maar heb geen flauw idee wat het allemaal doet.
Het enige dat ik weet, is dat het steeds werkt en ik er nog geen spam op heb gehad.
Mocht je een manier weten om deze spam eruit te filteren en hem in mijn code kan zetten, dan ben ik je daar dankbaar voor.
Ook verwijs je naar regel 337:
Code (php)
1
2
3
2
3
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
daarboven (regel 331) gebeurd hetzelfde alleen dan anders. Dit klopt dan wel?
Code (php)
1
2
3
2
3
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
Je hebt het ook over het misbruiken van de anti-flood in session. De site is te klein om maar ook een beetje op te vallen en niet aantrekkelijk voor een enkele misbruik van.
Wellicht heb je een punt maar voor het gebruik van de site vindt ik dit te verwaarlozen.
Ik hoop nog wat van je te horen!
Steven
Bij het initialiseren van de sessions met session_start(); wordt er namelijk een PHPSESSID-cookie aangemaakt. Daar kan geen HTML aan vooraf gaan. Net als wij mensen elkaar bij kennismaking eerst begroeten en vervolgens een hand geven. Daarna volgt een gesprek.
Wanneer ik alleen de // voor session weg haal, struikelt mn pagina over de volgende meldingen:
Code (php)
1
Warning: session_start(): Cannot send session cookie headers already sent by (output started at ..snip../admin-init.php:30) in ..snip../order-stickers.php on line 2
Code (php)
1
Warning: session_start(): Cannot send session cache limiter headers already sent (output started at ..snip../admin-init.php:30) in ..snip../order-stickers.php on line 2
Volgens mij was het daarom een reden dat ik het uit had gezet. De blokkade (antiflood) werkt echter wel.
Met //session....
Dat dat mag dus niet ;-)
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
add_action( 'init', 'woo_version_init', 10 );
function woo_version () {
$data = wooframework_get_theme_version_data();
echo "\n<!-- Theme version -->\n";
if ( isset( $data['is_child'] ) && true == $data['is_child'] ) echo '<meta name="generator" content="'. esc_attr( $data['child_theme_name'] . ' ' . $data['child_theme_version'] ) . '" />' ."\n";
echo '<meta name="generator" content="'. esc_attr( $data['theme_name'] . ' ' . $data['theme_version'] ) . '" />' ."\n";
echo '<meta name="generator" content="WooFramework '. esc_attr( $data['framework_version'] ) .'" />' ."\n";
} // End woo_version()
function woo_version () {
$data = wooframework_get_theme_version_data();
echo "\n<!-- Theme version -->\n";
if ( isset( $data['is_child'] ) && true == $data['is_child'] ) echo '<meta name="generator" content="'. esc_attr( $data['child_theme_name'] . ' ' . $data['child_theme_version'] ) . '" />' ."\n";
echo '<meta name="generator" content="'. esc_attr( $data['theme_name'] . ' ' . $data['theme_version'] ) . '" />' ."\n";
echo '<meta name="generator" content="WooFramework '. esc_attr( $data['framework_version'] ) .'" />' ."\n";
} // End woo_version()
regel 30:
Code (php)
1
echo '<meta name="generator" content="'. esc_attr( $data['theme_name'] . ' ' . $data['theme_version'] ) . '" />' ."\n";
Overigens is mijn hele binnenhalen van de bestelling 1 groot drama hahaha.... Maar het betreft nog steeds hetzelfde formulier.
Mag ik dat hier ook plaatsen of voor de goede orde een nieuw topic aanmaken? @-Ariën-
Als het een volledig ander probleem is, dan raad ik aan om daar een nieuw topic over te starten.
Bedankt voor alle reacties en hulp!!
Zou ik verplaatsen na de request-method if()
en dan vervangen door
$mail_ontv2 = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
http://php.net/filter-input
en
http://php.net/manual/en/filter.filters.sanitize.php
Als iemand een van de velden als emailadres, subject of een andere header weet aan te passen met onder andere enters, dan kan hij mogelijk de hele email overnemen en zelf een tekst bepalen en ook de ontvangers.
Dus waarschijnlijk zie je dan zelf niet eens de mails binnen komen.
- Ariën - op 01/02/2016 20:59:00:
Als er CSS, HTML of andere vorm van output (zelfs een spatie of een enter) voor een session_start() staat, zal dat betekenen dat je sessies niet uitgevoerd kunnen worden. Altijd gaan er headers aan een request van een pagina vooraf, deze beschrijven de pagina en plaatsen bijv. cookies.
Dit is niet per definitie zo, in sommige installaties/pakketten staat output buffering aan, ook al is dit niet de standaard instelling.
Als je uitgaat van default instellingen kom je nogal eens bedrogen uit.