Velden gevuld houden na foutmelding
Ik laat controleren of er velden leeg zijn
dan wel fout gevuld(email).
Wanneer zo'n fout optreed, krijg ik een melding,
maar daarna zijn alle velden weer leeg.
Bestaat de mogelijkheid dat de juiste velden
gevuld blijven?
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
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
<?php
//include de connectie file
require_once('connection.php');
//save de data in de DB en zend een mail
if(isset($_POST['action']) && $_POST['action'] == 'submitform')
{
//varibalen
$name = $_POST['name'];
$email = $_POST['email'];
$url = $_POST['url'];
$subject = $_POST['subject'];
$comment = $_POST['comment'];
$ip = gethostbyname($_SERVER['REMOTE_ADDR']);
$vervuild = FALSE; // TRUE als het formulier geen fouten bevat
$melding = ""; // String voor (fout)meldingen
// Spaties en andere witruimte verwijderen uit de naam en het e-mailadres,
// maar niet uit de tekst van het bericht:
$name = trim($name);
$email = trim($email);
if (strlen($name) < 1) {
$melding .= "Voer uw <strong>naam</strong> in. ";
$vervuild = TRUE;
}
if (strlen($email) < 1) {
$melding .= "Voer uw <strong>e-mailadres</strong> in. ";
$vervuild = TRUE;
} else {
require_once('is_email.inc.php');
if (!is_email($email)) {
$melding .= "<strong>" . htmlentities($email) . "</strong> is geen geldig e-mailadres. ";
$vervuild = TRUE;
}
}
if (strlen($comment) < 10) {
$melding .= "Voer een <strong>tekst</strong> van minimaal <strong>10</strong> karakters in. ";
$vervuild = TRUE;
}
if (!$vervuild) {
//save de data in de DB
mysql_select_db($database_connection, $connection);
$insert_query = sprintf("INSERT INTO contacts (name, email, url, subject, comment, date, ip) VALUES (%s, %s, %s, %s, %s, NOW(), %s)",
sanitize($name, "text"),
sanitize($email, "text"),
sanitize($url, "text"),
sanitize($subject, "text"),
sanitize($comment, "text"),
sanitize($ip, "text"));
$result = mysql_query($insert_query, $connection) or die(mysql_error());
if($result)
{
//mail zenden
$to = "[email protected]";
//headers and subject
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$name." <".$email.">\r\n";
$body = "Melding<br />";
$body .= "Naam: ".$name."<br />";
$body .= "Email: ".$email."<br />";
$body .= "Onderwerp: ".$subject."<br>";
$body .= "Bericht: ".$comment."<br />";
$body .= "IP: ".$ip."<br />";
mail($to, $subject, $body, $headers);
//ok bericht
echo "Uw email is verzonden";
}
}
}
function sanitize($value, $type)
{
$value = (!get_magic_quotes_gpc()) ? addslashes($value) : $value;
switch ($type) {
case "text":
$value = ($value != "") ? "'" . $value . "'" : "NULL";
break;
case "long":
case "int":
$value = ($value != "") ? intval($value) : "NULL";
break;
case "double":
$value = ($value != "") ? "'" . doubleval($value) . "'" : "NULL";
break;
case "date":
$value = ($value != "") ? "'" . $value . "'" : "NULL";
break;
}
return $value;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><?php echo $melding; ?></p>
<form id="contact" name="contact" action="contact.php" method="post">
<table border="0">
<tr><td>Naam:</td><td>
<input type="text" id="name" name="name" value="" maxlength="40">
</td></tr>
<tr><td>Email:</td><td>
<input type="text" id="email" name="email" value="" maxlength="50">
</td></tr>
<tr><td>Website:</td><td>
<input type="text" id="url" name="url" value="http://" maxlength="50">
</td></tr>
<tr><td>Onderwerp:</td><td>
<input type="text" id="subject" name="subject" value="" maxlength="50">
</td></tr>
<tr><td>Bericht: </td><td>
<textarea id="comment" name="comment" cols="45" rows="10"></textarea>
</td></tr>
<tr><td colspan="2" align="right">
<input type="hidden" id="action" name="action" value="submitform" />
<p><input type="submit" id="submit" name="submit" value="Verzenden" />
<input type="reset" id="reset" name="reset" value="Wissen" /></p>
</td></tr>
</table>
</form>
</body>
</html>
[/CODE]
//include de connectie file
require_once('connection.php');
//save de data in de DB en zend een mail
if(isset($_POST['action']) && $_POST['action'] == 'submitform')
{
//varibalen
$name = $_POST['name'];
$email = $_POST['email'];
$url = $_POST['url'];
$subject = $_POST['subject'];
$comment = $_POST['comment'];
$ip = gethostbyname($_SERVER['REMOTE_ADDR']);
$vervuild = FALSE; // TRUE als het formulier geen fouten bevat
$melding = ""; // String voor (fout)meldingen
// Spaties en andere witruimte verwijderen uit de naam en het e-mailadres,
// maar niet uit de tekst van het bericht:
$name = trim($name);
$email = trim($email);
if (strlen($name) < 1) {
$melding .= "Voer uw <strong>naam</strong> in. ";
$vervuild = TRUE;
}
if (strlen($email) < 1) {
$melding .= "Voer uw <strong>e-mailadres</strong> in. ";
$vervuild = TRUE;
} else {
require_once('is_email.inc.php');
if (!is_email($email)) {
$melding .= "<strong>" . htmlentities($email) . "</strong> is geen geldig e-mailadres. ";
$vervuild = TRUE;
}
}
if (strlen($comment) < 10) {
$melding .= "Voer een <strong>tekst</strong> van minimaal <strong>10</strong> karakters in. ";
$vervuild = TRUE;
}
if (!$vervuild) {
//save de data in de DB
mysql_select_db($database_connection, $connection);
$insert_query = sprintf("INSERT INTO contacts (name, email, url, subject, comment, date, ip) VALUES (%s, %s, %s, %s, %s, NOW(), %s)",
sanitize($name, "text"),
sanitize($email, "text"),
sanitize($url, "text"),
sanitize($subject, "text"),
sanitize($comment, "text"),
sanitize($ip, "text"));
$result = mysql_query($insert_query, $connection) or die(mysql_error());
if($result)
{
//mail zenden
$to = "[email protected]";
//headers and subject
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$name." <".$email.">\r\n";
$body = "Melding<br />";
$body .= "Naam: ".$name."<br />";
$body .= "Email: ".$email."<br />";
$body .= "Onderwerp: ".$subject."<br>";
$body .= "Bericht: ".$comment."<br />";
$body .= "IP: ".$ip."<br />";
mail($to, $subject, $body, $headers);
//ok bericht
echo "Uw email is verzonden";
}
}
}
function sanitize($value, $type)
{
$value = (!get_magic_quotes_gpc()) ? addslashes($value) : $value;
switch ($type) {
case "text":
$value = ($value != "") ? "'" . $value . "'" : "NULL";
break;
case "long":
case "int":
$value = ($value != "") ? intval($value) : "NULL";
break;
case "double":
$value = ($value != "") ? "'" . doubleval($value) . "'" : "NULL";
break;
case "date":
$value = ($value != "") ? "'" . $value . "'" : "NULL";
break;
}
return $value;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><?php echo $melding; ?></p>
<form id="contact" name="contact" action="contact.php" method="post">
<table border="0">
<tr><td>Naam:</td><td>
<input type="text" id="name" name="name" value="" maxlength="40">
</td></tr>
<tr><td>Email:</td><td>
<input type="text" id="email" name="email" value="" maxlength="50">
</td></tr>
<tr><td>Website:</td><td>
<input type="text" id="url" name="url" value="http://" maxlength="50">
</td></tr>
<tr><td>Onderwerp:</td><td>
<input type="text" id="subject" name="subject" value="" maxlength="50">
</td></tr>
<tr><td>Bericht: </td><td>
<textarea id="comment" name="comment" cols="45" rows="10"></textarea>
</td></tr>
<tr><td colspan="2" align="right">
<input type="hidden" id="action" name="action" value="submitform" />
<p><input type="submit" id="submit" name="submit" value="Verzenden" />
<input type="reset" id="reset" name="reset" value="Wissen" /></p>
</td></tr>
</table>
</form>
</body>
</html>
[/CODE]
Regel 12 tot 17 lijkt me overbodige je kunt deze beter aanroepen zoals het hoort. Variabellen dus niet overbodig kopieéren.
Gewijzigd op 09/02/2012 15:33:32 door Frank WD
Ben nu bezig met checken van de velden.
Gewijzigd op 09/02/2012 15:42:51 door Willem L
Code (php)
1
...value="<?php echo (isset($_POST['subject']) ? htmlspecialchars($_POST['subject']) : ''); ?>"...
Da's mooi. Alleen nadat de mail gecheckt is en verzonden is moeten de velden weer geleegd worden.
Dus aan het begin zet je "$verzonden = false;". Daarna als de mail succesvol is verzonden "$verzonden = true;" en bij het printen van de inputs check je wat de waarde is van $verzonden.
Gewijzigd op 09/02/2012 17:15:03 door Erwin H