Checkbox werkt niet
alles werkt naar behoren, alle foutmeldingen zijn getest.
maar nu wil ik het script testen of hij ook de mail zal versturen.
maar na het invullen van het formulier, en het aanvinken van de checkbox,
blijf ik de foutmelding krijgen dat de checkbox niet aangevinkt is.
Wie weet wat ik fout doe?
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
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
<?php
/**
* @author Ben
* @copyright 2010
*/
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$to = '[email protected]';
$subject = 'Lidmaatschap';
$errors = array();
$data = array();
$ip = $_SERVER['REMOTE_ADDR'];
$datum = date("d.m.Y H:i");
$headers = "From: [email protected]\r\n";
$headers .= "Reply-To: [email protected]\r\n";
$inhoud_mail = "==================================================================\n";
$inhoud_mail .= "Aanvraag lidmaatschap DTU\n";
$inhoud_mail .= "==================================================================\n\n";
$inhoud_mail .= "Inschrijf nr: " . $_POST['bsn'] . "\n";
$inhoud_mail .= "Volledige naam: " . $_POST['voornaam']. " ".$_POST['achternaam']. "\n";
$inhoud_mail .= "Roepnaam: " . $_POST['roepnaam'] . "\n";
$inhoud_mail .= "Adres: " . $_POST['adres']. " " .$_POST['huisnummer']. "\n";
$inhoud_mail .= "Postcode en Plaats: " . $_POST['postcode']. " " .$_POST['plaats']. "\n";
$inhoud_mail .= "Telefoon nummer: " . $_POST['tel'] . "\n";
$inhoud_mail .= "Email adres: " . $_POST['email'] . "\n";
$inhoud_mail .= "Geboorte datum: " . $_POST['dag']."-".$_POST['maand']."-".$_POST['jaar']. "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "\n";
$inhoud_mail .= "==================================================================\n\n";
// formulier velden declareren
$form = array(
'voornaam' =>'text',
'achternaam' =>'text',
'roepnaam' =>'text',
'bsn' =>'text',
'adres' =>'text',
'huisnummer' =>'text',
'postcode' =>'text',
'plaats' =>'text',
'tel' =>'text',
'email' =>'text',
'dag' =>'select',
'maand' =>'select',
'jaar' =>'select',
'accoord' => 'checkbox');
// controle voor alle velden
foreach($form as $veld =>$type)
{
if($type == 'checkbox')
{
if(empty($_POST[$veld]))
{
$errors[$veld] = true;
$errors[] = 'U dient het vinkje voor accoord aan te zetten';
}
else
{
$data[$veld]=$_POST[$veld];
}
}
if(isset($_POST[$veld]))
{
$value = trim($_POST[$veld]);
$form[$veld] = $value;
// controle van email en postcode
if($veld == 'postcode')
{
if(!preg_match('/^[0-9]{4}[[:space:]]?[a-z]{2}$/i', $value))
{
$errors[$veld] = true;
$errors[] = 'Je hebt geen geldige postcode ingevuld.';
}
}
// controle op een geldig email adres
elseif($veld == 'email')
{
if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$value))
{
$errors[$veld] = true;
$errors[] = 'Dit is geen geldig email adres.';
}
}
if(empty($value))
{
$errors[$veld] = true;
$errors[] = 'U bent uw '.$veld.' vergeten in te vullen';
}
}
else
{
$errors[]= 'Het veld '.$veld.' ontbreekt.';
}
}
if(empty($errors))
{
if(mail($to,$subject,$inhoud_mail,$headers))
{
echo '<p>Wij heten u van harte welkom ' .$_POST['roepnaam'].'</p><br />';
echo '<p>Uw aanvraag is geregistreerd met ip adres: '.$ip.' op datum: ' .$datum.'</p>';
}
else
{
echo "Het formulier is niet verzonden.<br>Probeer het <a href='javascript:history.back(1);'>opnieuw</a>.";
}
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 5; url=lidworden.html');
foreach($errors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
?>
/**
* @author Ben
* @copyright 2010
*/
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$to = '[email protected]';
$subject = 'Lidmaatschap';
$errors = array();
$data = array();
$ip = $_SERVER['REMOTE_ADDR'];
$datum = date("d.m.Y H:i");
$headers = "From: [email protected]\r\n";
$headers .= "Reply-To: [email protected]\r\n";
$inhoud_mail = "==================================================================\n";
$inhoud_mail .= "Aanvraag lidmaatschap DTU\n";
$inhoud_mail .= "==================================================================\n\n";
$inhoud_mail .= "Inschrijf nr: " . $_POST['bsn'] . "\n";
$inhoud_mail .= "Volledige naam: " . $_POST['voornaam']. " ".$_POST['achternaam']. "\n";
$inhoud_mail .= "Roepnaam: " . $_POST['roepnaam'] . "\n";
$inhoud_mail .= "Adres: " . $_POST['adres']. " " .$_POST['huisnummer']. "\n";
$inhoud_mail .= "Postcode en Plaats: " . $_POST['postcode']. " " .$_POST['plaats']. "\n";
$inhoud_mail .= "Telefoon nummer: " . $_POST['tel'] . "\n";
$inhoud_mail .= "Email adres: " . $_POST['email'] . "\n";
$inhoud_mail .= "Geboorte datum: " . $_POST['dag']."-".$_POST['maand']."-".$_POST['jaar']. "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "\n";
$inhoud_mail .= "==================================================================\n\n";
// formulier velden declareren
$form = array(
'voornaam' =>'text',
'achternaam' =>'text',
'roepnaam' =>'text',
'bsn' =>'text',
'adres' =>'text',
'huisnummer' =>'text',
'postcode' =>'text',
'plaats' =>'text',
'tel' =>'text',
'email' =>'text',
'dag' =>'select',
'maand' =>'select',
'jaar' =>'select',
'accoord' => 'checkbox');
// controle voor alle velden
foreach($form as $veld =>$type)
{
if($type == 'checkbox')
{
if(empty($_POST[$veld]))
{
$errors[$veld] = true;
$errors[] = 'U dient het vinkje voor accoord aan te zetten';
}
else
{
$data[$veld]=$_POST[$veld];
}
}
if(isset($_POST[$veld]))
{
$value = trim($_POST[$veld]);
$form[$veld] = $value;
// controle van email en postcode
if($veld == 'postcode')
{
if(!preg_match('/^[0-9]{4}[[:space:]]?[a-z]{2}$/i', $value))
{
$errors[$veld] = true;
$errors[] = 'Je hebt geen geldige postcode ingevuld.';
}
}
// controle op een geldig email adres
elseif($veld == 'email')
{
if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$value))
{
$errors[$veld] = true;
$errors[] = 'Dit is geen geldig email adres.';
}
}
if(empty($value))
{
$errors[$veld] = true;
$errors[] = 'U bent uw '.$veld.' vergeten in te vullen';
}
}
else
{
$errors[]= 'Het veld '.$veld.' ontbreekt.';
}
}
if(empty($errors))
{
if(mail($to,$subject,$inhoud_mail,$headers))
{
echo '<p>Wij heten u van harte welkom ' .$_POST['roepnaam'].'</p><br />';
echo '<p>Uw aanvraag is geregistreerd met ip adres: '.$ip.' op datum: ' .$datum.'</p>';
}
else
{
echo "Het formulier is niet verzonden.<br>Probeer het <a href='javascript:history.back(1);'>opnieuw</a>.";
}
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 5; url=lidworden.html');
foreach($errors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
?>
empty:
"Empty($var) is een functie die TRUE teruggeeft als:
•De variabele die wordt getest niet gedefinieerd is
•de variabele gelijk is aan 0, FALSE, een lege string of een lege array
Omdat de naam empty doet vermoeden dat het controleert of een variabele leeg is wordt deze functie te pas en te onpas gebruikt om te controleren of een veld in een formulier is ingevuld. Dat kan niet zomaar omdat nul een geldige waarde kan zijn voor numerieke velden zoals een aantal producten in een winkelwagentje.
Empty() heeft in doorsnee PHP code geen enkel nut.
Kijk liever naar functies als strlen(), ctype_digit() (en soortgelijken) en regular-expressions om een waarde te controleren op wat je daadwerkelijk wilt weten. "
http://wiki.phpfreakz.nl/Empty
Je kan beter een mail class gebruiken als:
PHP Mailer
Swift Mailer
if(empty($_POST[$veld] = false))
of
if(empty($_POST[$veld] = "0"))
of zie ik dit verkeerd