form verwerken en errors genereren
ik gebruik nu het volgende systeem om de input v/e form te controleren en fouten weer te geven.
als er een fout optreed in het verwerken v/h formulier include ik een html-pagina dat een nieuw form en een echo bevat van de foutmelding (post variabele).
Maar ik zou het nu anders willen doen. Nl: als er een fout optreed in het verwerken v/h formulier een header verzende naar een foutenpagina met in de header de fouten.
Is deze 2e een goed ontwerp? Of heeft iemand nog een ander goed ontwerp? Ik heb al js-beveiliging dus dat is uitgesloten.
kun je misschien een paar scripts laten zien zodat we weten wat je precies bedoelt?
verwerk.php:
if (!$allesingevuld) {
$errormessage = genereerErrorMessage($reeks, $studentennr, $voornaam, $naam, $studentpaswoord, $studentpaswoordcheck, $email);
$_POST['errormessage'] = $errormessage;
include("register.php");}
}
!$allesingevuld is functie, alsook genereerErrorMessage.
register.php bevat dan die echo van errormessage (je verliest gen post-data met includes)
2e moet ik nog implementere als ik 'm 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
require 'inc/formvoorbeeld_form.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHPHulp | Verwerk Form</title>
</head>
<body>
<?php
echo $form;
?>
</body>
</html>
ini_set ('display_errors', 1);
error_reporting (E_ALL | E_STRICT);
require 'inc/formvoorbeeld_form.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHPHulp | Verwerk Form</title>
</head>
<body>
<?php
echo $form;
?>
</body>
</html>
En het bestand dat bovenaan gerequired wordt:
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
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
<?php
$form_ok = false;
$form = '
<form method="post" action="formvoorbeeld.php">
<div>
<label for="naam">naam:</label>
<input id="naam" name="naam" type="text" value="{naam}" />
{naam_error}
</div>
<div>
<label for="email">e-mail:</label>
<input id="email" name="email" type="text" value="{email}" />
{email_error}
</div>
<div>
<input type="submit" value="verzenden" />
</div>
</form>
';
$required = array ('naam', 'email');
$fields = array (
'{naam}' => (isset ($_POST['naam'])) ? (trim ($_POST['naam'])) : (null),
'{email}' => (isset ($_POST['email'])) ? (trim ($_POST['email'])) : (null)
);
$errors = array (
'{naam_error}' => null,
'{email_error}' => null
);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$form_ok = true;
foreach ($required as $field) {
if (empty ($fields['{' . $field . '}'])) {
$errors['{' . $field . '_error}'] = '<span class="error"><strong>' . $field . '</strong> is een verplicht veld</span>';
$form_ok = false;
}
}
}
$form = str_replace (array_keys ($fields), array_values ($fields), $form);
$form = str_replace (array_keys ($errors), array_values ($errors), $form);
if ($form_ok) {
// verwerk de formgegevens hier
$form = '
<h3>Dankuwel voor het invullen van het formulier</h3>
<pre>' . print_r ($_POST, true) . '</pre>
';
}
?>
$form_ok = false;
$form = '
<form method="post" action="formvoorbeeld.php">
<div>
<label for="naam">naam:</label>
<input id="naam" name="naam" type="text" value="{naam}" />
{naam_error}
</div>
<div>
<label for="email">e-mail:</label>
<input id="email" name="email" type="text" value="{email}" />
{email_error}
</div>
<div>
<input type="submit" value="verzenden" />
</div>
</form>
';
$required = array ('naam', 'email');
$fields = array (
'{naam}' => (isset ($_POST['naam'])) ? (trim ($_POST['naam'])) : (null),
'{email}' => (isset ($_POST['email'])) ? (trim ($_POST['email'])) : (null)
);
$errors = array (
'{naam_error}' => null,
'{email_error}' => null
);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$form_ok = true;
foreach ($required as $field) {
if (empty ($fields['{' . $field . '}'])) {
$errors['{' . $field . '_error}'] = '<span class="error"><strong>' . $field . '</strong> is een verplicht veld</span>';
$form_ok = false;
}
}
}
$form = str_replace (array_keys ($fields), array_values ($fields), $form);
$form = str_replace (array_keys ($errors), array_values ($errors), $form);
if ($form_ok) {
// verwerk de formgegevens hier
$form = '
<h3>Dankuwel voor het invullen van het formulier</h3>
<pre>' . print_r ($_POST, true) . '</pre>
';
}
?>