Offerte formulier werkt niet
Ik ben al een tijdje bezig met een offerte formulier. Ik krijg het maar niet werkend.
Verder heb ik ook nog niet zoveel ervaring met PHP. Het formulier reageert nergens op bij het klikken op de submit button.
Alle variabelen zijn benoemd.
Alvast hartelijk dankt voor de hulp/uitleg.
Groeten Gabriela
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
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
<?php
if(!isset($_POST['submit']))
{
$company = $_POST['companyname'];
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$travelers = $_POST['persons'];
$bagage = $_POST['luggage'];
$departaddress = $_POST['depart'];
$datedepart = $_POST['departdate'];
$dephour = $_POST['departhour'];
$depminute = $_POST['departminute'];
$destinationaddress = $_POST['destination'];
$datereturn = $_POST['returndate'];
$rethour = $_POST['returnhour'];
$retminute = $_POST['returnminute'];
$extrastops = $_POST['stops'];
$type = $_POST['bustype'];
$message = $_POST['comments'];
}
//Validate first
if(empty($name)||empty($visitor_email))
{
echo "Naam en emailadres zijn verplicht!";
exit;
}
if(IsInjected($visitor_email))
{
echo "Ongeldige invoer";
exit;
}
$email_from = '[email protected]';
$email_subject = "Offerte aanvraag";
$email_body = "Bedrijfsnaam:" .$companyname."\n". "Naam:" .$name."\n". "Email:" .$visitor_email."\n". "Aantal personen:" .$travelers. "\n"."Bagage:" .$bagage. "\n"."Vertrekadres:" .$departaddress. "\n"."Vertrekdatum:" .$datedepart. "\n". "Vertrek tijdstip:" .$dephour. "\n". "" .$depminute. "\n". "Bestemming:" .$destinationaddress. "\n". "Retourdatum:" .$datereturn. "\n". "Retour tijdstip:" .$rethour. "" .$retminute. "\n"."Extra stops:" .$extrastops. "\n". "Type bus:" .$type. "\n"."Bericht:" .$message"\n";
$to = "[email protected]";
$headers = "From: $email_from \r\n";
$headers = "Reply-To: $visitor_email \r\n";
mail($to,$email_subject,$email_body, $headers);
header('Location: bedankt.html');
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>
if(!isset($_POST['submit']))
{
$company = $_POST['companyname'];
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$travelers = $_POST['persons'];
$bagage = $_POST['luggage'];
$departaddress = $_POST['depart'];
$datedepart = $_POST['departdate'];
$dephour = $_POST['departhour'];
$depminute = $_POST['departminute'];
$destinationaddress = $_POST['destination'];
$datereturn = $_POST['returndate'];
$rethour = $_POST['returnhour'];
$retminute = $_POST['returnminute'];
$extrastops = $_POST['stops'];
$type = $_POST['bustype'];
$message = $_POST['comments'];
}
//Validate first
if(empty($name)||empty($visitor_email))
{
echo "Naam en emailadres zijn verplicht!";
exit;
}
if(IsInjected($visitor_email))
{
echo "Ongeldige invoer";
exit;
}
$email_from = '[email protected]';
$email_subject = "Offerte aanvraag";
$email_body = "Bedrijfsnaam:" .$companyname."\n". "Naam:" .$name."\n". "Email:" .$visitor_email."\n". "Aantal personen:" .$travelers. "\n"."Bagage:" .$bagage. "\n"."Vertrekadres:" .$departaddress. "\n"."Vertrekdatum:" .$datedepart. "\n". "Vertrek tijdstip:" .$dephour. "\n". "" .$depminute. "\n". "Bestemming:" .$destinationaddress. "\n". "Retourdatum:" .$datereturn. "\n". "Retour tijdstip:" .$rethour. "" .$retminute. "\n"."Extra stops:" .$extrastops. "\n". "Type bus:" .$type. "\n"."Bericht:" .$message"\n";
$to = "[email protected]";
$headers = "From: $email_from \r\n";
$headers = "Reply-To: $visitor_email \r\n";
mail($to,$email_subject,$email_body, $headers);
header('Location: bedankt.html');
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>
HTML form:
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
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
<form method="post" action="send_quotation.php" name="contactform" >
<div id="message"></div>
<div class="f-row">
<div class="one-half">
<label for="companyname">Bedrijfsnaam</label>
<input type="text" name="companyname" id="companyname" />
</div>
<div class="one-half">
<label for="name">Voor- en achternaam</label>
<input type="text" name="name" id="name" />
</div>
<div class="one-half">
<label for="email">Emailadres</label>
<input type="email" name="email" id="email" />
</div>
<div class="one-half">
<label for="persons">Aantal reizigers</label>
<input type="number" name="persons" id="persons" />
</div>
<div class="one-half">
<label for="luggage">Aantal bagagestukken</label>
<input type="number" name="luggage" id="luggage" />
</div>
</div>
<hr>
<div class="f-row">
<div class="full-width">
<label for="depart">Vertrekadres</label>
<input type="text" name="depart" id="depart" />
</div>
<div class="one-half">
<label for="departdate">Datum vertrek</label>
<input type="text" name="departdate" id="departdate" value=" dd-mm-jjjj" />
</div>
<div class="one-fourth" >
<label for="departhour">Tijdstip vertrek</label>
<select name="departhour" >
<option> 00 </option>
<option> 01 </option>
<option> 02 </option>
<option> 03 </option>
<option> 04 </option>
<option> 05 </option>
<option> 06 </option>
<option> 07 </option>
<option> 08 </option>
<option> 09 </option>
<option> 10 </option>
<option> 11 </option>
<option> 12 </option>
<option> 13 </option>
<option> 14 </option>
<option> 15 </option>
<option> 16 </option>
<option> 17 </option>
<option> 18 </option>
<option> 19 </option>
<option> 20 </option>
<option> 21 </option>
<option> 22 </option>
<option> 23 </option>
</select>
</div>
<div class="one-fourth" >
<label for="departminute"><br/></label>
<select name="departminute" >
<option> 00 </option>
<option> 15 </option>
<option> 30 </option>
<option> 45 </option>
</select>
</div>
</div>
<hr>
<div class="f-row">
<div class="full-width">
<label for="destination">Bestemming</label>
<input type="text" name="destination" id="destination" />
</div>
<div class="one-half">
<label for="returndate">Datum terugreis</label>
<input type="text" name="returndate" id="returndate" value=" dd-mm-jjjj" />
</div>
<div class="one-fourth" >
<label for="returnhour">Tijdstip terugreis</label>
<select name="returnhour" >
<option> 00 </option>
<option> 01 </option>
<option> 02 </option>
<option> 03 </option>
<option> 04 </option>
<option> 05 </option>
<option> 06 </option>
<option> 07 </option>
<option> 08 </option>
<option> 09 </option>
<option> 10 </option>
<option> 11 </option>
<option> 12 </option>
<option> 13 </option>
<option> 14 </option>
<option> 15 </option>
<option> 16 </option>
<option> 17 </option>
<option> 18 </option>
<option> 19 </option>
<option> 20 </option>
<option> 21 </option>
<option> 22 </option>
<option> 23 </option>
</select>
</div>
<div class="one-fourth" >
<label for="returnminute"><br/></label>
<select name="returnminute">
<option> 00 </option>
<option> 15 </option>
<option> 30 </option>
<option> 45 </option>
</select>
</div>
</div>
<div class="f-row">
<div class="one-half">
<label for="stops">Aantal tussenstops</label>
<input type="text" name="stops" id="stops" />
</div>
<div class="one-half">
<label for="bustype">Gewenste bustype</label>
<select name"bustype">
<option value="" selected> Maak uw keuze </option>
<option value="max50" >Bus max 50 pers</option>
<option value="vip29" > Vip bus max 30 pers</option>
</select>
</div>
</div>
<hr>
<div class="f-row">
<div class="full-width">
<label for="comments">Extra informatie</i></label>
<textarea placeholder="Benoem hier eventueel de extra tussenstops" name="comments" id="comments" >
</textarea>
</div>
</div>
<div class="f-row">
<input type="submit" value="Verstuur" name="submit" class="btn color medium right" />
</div>
</form>
</div>
<div id="message"></div>
<div class="f-row">
<div class="one-half">
<label for="companyname">Bedrijfsnaam</label>
<input type="text" name="companyname" id="companyname" />
</div>
<div class="one-half">
<label for="name">Voor- en achternaam</label>
<input type="text" name="name" id="name" />
</div>
<div class="one-half">
<label for="email">Emailadres</label>
<input type="email" name="email" id="email" />
</div>
<div class="one-half">
<label for="persons">Aantal reizigers</label>
<input type="number" name="persons" id="persons" />
</div>
<div class="one-half">
<label for="luggage">Aantal bagagestukken</label>
<input type="number" name="luggage" id="luggage" />
</div>
</div>
<hr>
<div class="f-row">
<div class="full-width">
<label for="depart">Vertrekadres</label>
<input type="text" name="depart" id="depart" />
</div>
<div class="one-half">
<label for="departdate">Datum vertrek</label>
<input type="text" name="departdate" id="departdate" value=" dd-mm-jjjj" />
</div>
<div class="one-fourth" >
<label for="departhour">Tijdstip vertrek</label>
<select name="departhour" >
<option> 00 </option>
<option> 01 </option>
<option> 02 </option>
<option> 03 </option>
<option> 04 </option>
<option> 05 </option>
<option> 06 </option>
<option> 07 </option>
<option> 08 </option>
<option> 09 </option>
<option> 10 </option>
<option> 11 </option>
<option> 12 </option>
<option> 13 </option>
<option> 14 </option>
<option> 15 </option>
<option> 16 </option>
<option> 17 </option>
<option> 18 </option>
<option> 19 </option>
<option> 20 </option>
<option> 21 </option>
<option> 22 </option>
<option> 23 </option>
</select>
</div>
<div class="one-fourth" >
<label for="departminute"><br/></label>
<select name="departminute" >
<option> 00 </option>
<option> 15 </option>
<option> 30 </option>
<option> 45 </option>
</select>
</div>
</div>
<hr>
<div class="f-row">
<div class="full-width">
<label for="destination">Bestemming</label>
<input type="text" name="destination" id="destination" />
</div>
<div class="one-half">
<label for="returndate">Datum terugreis</label>
<input type="text" name="returndate" id="returndate" value=" dd-mm-jjjj" />
</div>
<div class="one-fourth" >
<label for="returnhour">Tijdstip terugreis</label>
<select name="returnhour" >
<option> 00 </option>
<option> 01 </option>
<option> 02 </option>
<option> 03 </option>
<option> 04 </option>
<option> 05 </option>
<option> 06 </option>
<option> 07 </option>
<option> 08 </option>
<option> 09 </option>
<option> 10 </option>
<option> 11 </option>
<option> 12 </option>
<option> 13 </option>
<option> 14 </option>
<option> 15 </option>
<option> 16 </option>
<option> 17 </option>
<option> 18 </option>
<option> 19 </option>
<option> 20 </option>
<option> 21 </option>
<option> 22 </option>
<option> 23 </option>
</select>
</div>
<div class="one-fourth" >
<label for="returnminute"><br/></label>
<select name="returnminute">
<option> 00 </option>
<option> 15 </option>
<option> 30 </option>
<option> 45 </option>
</select>
</div>
</div>
<div class="f-row">
<div class="one-half">
<label for="stops">Aantal tussenstops</label>
<input type="text" name="stops" id="stops" />
</div>
<div class="one-half">
<label for="bustype">Gewenste bustype</label>
<select name"bustype">
<option value="" selected> Maak uw keuze </option>
<option value="max50" >Bus max 50 pers</option>
<option value="vip29" > Vip bus max 30 pers</option>
</select>
</div>
</div>
<hr>
<div class="f-row">
<div class="full-width">
<label for="comments">Extra informatie</i></label>
<textarea placeholder="Benoem hier eventueel de extra tussenstops" name="comments" id="comments" >
</textarea>
</div>
</div>
<div class="f-row">
<input type="submit" value="Verstuur" name="submit" class="btn color medium right" />
</div>
</form>
</div>
Gewijzigd op 06/09/2016 21:01:23 door Gabriela Karatzia
Los van het feit dat deze werkwijze niet klopt, is het controleren van het versturen van het formulier en het aanmaken van variabelen ook erg onnodig. Die variabelen zouden immers al moeten bestaan, dus hoef je ze niet nogmaals aan te maken.
In je validatie gebruik je ook een exit; dit laat je script direct stoppen, en ik vraag me af of dat echt is wat je wilt? Als jij winkelt en je maakt een foutje door het verkeerde product uit het schap te halen, dan verlaat je ook niet de winkel, en handel je het juist af.
In korte lijnen zou ik het script als volgt oplossen:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
// op dit moment is je formulier verstuurd via de POST-methode.
$errors = array(); // maak een array aan voor alle fouten in de validatie.
if(empty($_POST['name'])|| empty($_POST['email'])) {
$errors[] = "Naam en e-mailadres zijn verplicht!";
}
if(IsInjected($_POST['email'])) {
$errors[] = "Ongeldige invoer!";
}
if(count($errors)>0) {
// we hebben één of meer validatiefouten gevonden, loont ze allemaal in deze foreachlus.
foreach($errors as $error {
echo "Fout: ".$error."<br />";
}
} else {
// er zijn geen validatiefouten. Alles is goed.
// Hier kan je mailen, en kan je de $_POST-waardes gebruiken, zoals ik ze al eerder in dit script gebruik.
}
}
?>
if($_SERVER['REQUEST_METHOD']=="POST") {
// op dit moment is je formulier verstuurd via de POST-methode.
$errors = array(); // maak een array aan voor alle fouten in de validatie.
if(empty($_POST['name'])|| empty($_POST['email'])) {
$errors[] = "Naam en e-mailadres zijn verplicht!";
}
if(IsInjected($_POST['email'])) {
$errors[] = "Ongeldige invoer!";
}
if(count($errors)>0) {
// we hebben één of meer validatiefouten gevonden, loont ze allemaal in deze foreachlus.
foreach($errors as $error {
echo "Fout: ".$error."<br />";
}
} else {
// er zijn geen validatiefouten. Alles is goed.
// Hier kan je mailen, en kan je de $_POST-waardes gebruiken, zoals ik ze al eerder in dit script gebruik.
}
}
?>
Gewijzigd op 06/09/2016 23:11:15 door - Ariën -