Mijn eerste formulier
Dit is mijn allereerste PHP documentje, en het werkt beter dan ik al verwacht had. Maar ik heb 4 problemen die ik graag opgelost zou zien.
Probleem 1: De gegevens van dit formulier worden mij doorgestuurd, maar $email is de enige ingevulde waarde die ik ontvang. De rest van de $data is niet aanwezig in mijn e-mail. De validatie klopt wel.
Probleem 2: $meetnaam zou het onderwerp van de mail moeten zijn, dit is het niet.
Probleem 3: $email zou ook als de "verzender" moeten gekend zijn (nu is dit blanco), zodat ik gewoon op reageren kan klikken om vragen te stellen.
Probleem 4: Hoe kan ik er voor zorgen dat het vakje ($akkoord) MOET aangevinkt zijn. Net zoals nu sommige tekst velden verplicht zijn?
Dank bij voorbaat,
Dit is de code:
PHP structuur
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
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
<?php
/* Dit is waar de mail naar toe gaat, dit werkt! */
$myemail = "[email protected]";
/* Controle op de ingevulde data. Dit werkt op deze gegevens. */
$name = check_input($_POST['meetnaam'], "Voer de meet naam in.");
$subject = check_input($_POST['meetadres'], "Voer het adres van de meet in.");
$email = check_input($_POST['email']);
/* Foutmelding bij e-mail adres. Dit werkt. */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("Het opgegeven e-mail adres is ongeldig.");
}
/* Dit is het bericht die ik moet ontvangen, ik ontvang deze gegevens, maar NIET de gegevens met een $ teken er in, met uitzondering van $email, die staat er wel. */
$message = "
Naam van de meet: $meetnaam
Organisator: $organisator
Adres: $meetadres
Binnen of buiten: $binbuit
E-mail adres: $email
Mag e-mail verschijnen op de website: $emailtonen
Contact (telefoon): $telefoon
Uren: $meeturen
Bereikbaarheid met de trein: $trein
Bereikbaarheid met de auto: $auto
Andere informatie: $andereinfo
Akkoord met de regels: $akkoord
";
/* Mail structuur, $meetnaam zou het ONDERWERP moeten zijn, maar dit is het niet. $message staat wel in de mail, maar niet met alle gegevens. Ook zou ik graag hebben dat het ingevoerde mailadres dat van de verstuurder is (nu is het mail adres van de verstuurder blanco */
mail($myemail, $meetnaam, $message);
/* Als het gelukt is, komten ze uit op deze pagina. Dit werkt. */
header('Location: klaar.html');
exit();
/* Functies */
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>
<p>Oeps, verbeter alstublieft de volgende fout:</p>
<strong><?php echo $myError; ?></strong>
<p>Keer terug, en probeer het opnieuw.</p>
</body>
</html>
<?php
exit();
}
?>
/* Dit is waar de mail naar toe gaat, dit werkt! */
$myemail = "[email protected]";
/* Controle op de ingevulde data. Dit werkt op deze gegevens. */
$name = check_input($_POST['meetnaam'], "Voer de meet naam in.");
$subject = check_input($_POST['meetadres'], "Voer het adres van de meet in.");
$email = check_input($_POST['email']);
/* Foutmelding bij e-mail adres. Dit werkt. */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("Het opgegeven e-mail adres is ongeldig.");
}
/* Dit is het bericht die ik moet ontvangen, ik ontvang deze gegevens, maar NIET de gegevens met een $ teken er in, met uitzondering van $email, die staat er wel. */
$message = "
Naam van de meet: $meetnaam
Organisator: $organisator
Adres: $meetadres
Binnen of buiten: $binbuit
E-mail adres: $email
Mag e-mail verschijnen op de website: $emailtonen
Contact (telefoon): $telefoon
Uren: $meeturen
Bereikbaarheid met de trein: $trein
Bereikbaarheid met de auto: $auto
Andere informatie: $andereinfo
Akkoord met de regels: $akkoord
";
/* Mail structuur, $meetnaam zou het ONDERWERP moeten zijn, maar dit is het niet. $message staat wel in de mail, maar niet met alle gegevens. Ook zou ik graag hebben dat het ingevoerde mailadres dat van de verstuurder is (nu is het mail adres van de verstuurder blanco */
mail($myemail, $meetnaam, $message);
/* Als het gelukt is, komten ze uit op deze pagina. Dit werkt. */
header('Location: klaar.html');
exit();
/* Functies */
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>
<p>Oeps, verbeter alstublieft de volgende fout:</p>
<strong><?php echo $myError; ?></strong>
<p>Keer terug, en probeer het opnieuw.</p>
</body>
</html>
<?php
exit();
}
?>
Formulier structuur:
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
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
<form method="post" action="meetmailer.php">
<div class="colformwrap">
<div class="colformleft">
Naam van de meet <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="meetnaam" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Naam van de organisatie of organisator:
</div><!--
--><div class="colformright">
<input type="text" name="organisator" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Adres van de meet <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="meetadres" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Is de meet binnen of buiten?
</div><!--
--><div class="colformright">
<select name="binbuit">
<option value="Buiten">Buiten</option>
<option value="Binnen">Binnen</option>
<option value="Binnen en Buiten">Binnen en Buiten</option>
</select>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Contact (e-mail adres) <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="email" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Mag dit e-mail adres op de website verschijnen?
</div><!--
--><div class="colformright">
<input class="bolleke" type="radio" name="emailtonen" value="0" checked> Neen <input class="bolleke" type="radio" name="emailtonen" value="1"> Ja
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Contact (telefoon):
</div><!--
--><div class="colformright">
<input type="text" name="telefoon" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Uren:
</div><!--
--><div class="colformright">
<input type="text" name="meeturen" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Bereikbaarheid met de trein:
</div><!--
--><div class="colformright">
<textarea name="trein" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Bereikbaarheid met de auto:
</div><!--
--><div class="colformright">
<textarea name="auto" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Andere informatie:
</div><!--
--><div class="colformright">
<textarea name="andereinfo" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
</div><!--
--><div class="colformright">
<input class="bolleke" type="checkbox" name="akkoord" value="0"> Ik heb de <a href="#">regels</a> gelezen en ga hiermee akkoord.
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
</div><!--
--><div class="colformright">
<input class="verstuurknop" type="submit" value="Verzenden">
</div>
</div>
</form>
<div class="colformwrap">
<div class="colformleft">
Naam van de meet <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="meetnaam" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Naam van de organisatie of organisator:
</div><!--
--><div class="colformright">
<input type="text" name="organisator" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Adres van de meet <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="meetadres" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Is de meet binnen of buiten?
</div><!--
--><div class="colformright">
<select name="binbuit">
<option value="Buiten">Buiten</option>
<option value="Binnen">Binnen</option>
<option value="Binnen en Buiten">Binnen en Buiten</option>
</select>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Contact (e-mail adres) <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="email" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Mag dit e-mail adres op de website verschijnen?
</div><!--
--><div class="colformright">
<input class="bolleke" type="radio" name="emailtonen" value="0" checked> Neen <input class="bolleke" type="radio" name="emailtonen" value="1"> Ja
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Contact (telefoon):
</div><!--
--><div class="colformright">
<input type="text" name="telefoon" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Uren:
</div><!--
--><div class="colformright">
<input type="text" name="meeturen" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Bereikbaarheid met de trein:
</div><!--
--><div class="colformright">
<textarea name="trein" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Bereikbaarheid met de auto:
</div><!--
--><div class="colformright">
<textarea name="auto" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Andere informatie:
</div><!--
--><div class="colformright">
<textarea name="andereinfo" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
</div><!--
--><div class="colformright">
<input class="bolleke" type="checkbox" name="akkoord" value="0"> Ik heb de <a href="#">regels</a> gelezen en ga hiermee akkoord.
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
</div><!--
--><div class="colformright">
<input class="verstuurknop" type="submit" value="Verzenden">
</div>
</div>
</form>
- 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 04/06/2016 16:45:42 door - Ariën -
Alle waarden die je post staan in een array dus verander het naar $_POST['meetnaam']
En dit bij oplossing 2: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 24
Dit is mijn allereerste formulier, dus sorry als ik echt grote fouten heb gemaakt.
Verander dit
in
en dat voor al je velden uit het formulier
Zoals Daan al aangeeft:
$meetnaam (Undefined variable: meetnaam ) bestaat niet dat is $_POST['meetnaam'].
En kijk eens naar die link voor de mailheaders.
Als je verandert ben je al een heel eind.