vragen m.b.t. verwerking formulier
Doelstelling:
Bij eventuele fouten (lege velden, onjuiste tekens etc) wil ik graag het desbetreffende veld rood kleuren met de ingevoerde tekst, zodat ze niet alles opnieuw hoeven te typen.
Vragen:
1. Wat is tegenwoordig de meest gebruikelijke manier om een formulier te verwerken?
Is dit op 1 pagina of, zoals ik nu probeer, via een verwerk.php pagina.
Ik gebruik nu de volgende situatie:
registratie-pagina >> verwerk-pagina >> registratie_error-pagina (bij errors dan)
>> welkom-pagina.
2. Hoe kan ik de eventuele fouten (lege velden etc) terugkoppelen in een nieuw
formulier met de bovenstaande opmaak. Kan ik hier het beste gebruik maken van een
session of zijn er andere veilige opties?
Ter info:
- Er zit al wel een mysql_real_escape_string functie in het script maar nog geen
controle van max. lengte en juiste tekens etc. Dit komt nog.
- De registratiecode optie is bewust gekozen.
- De registratiecode staat in dit geval in een eigen tabel (handig?)
- De mysql error verdwijnt straks nog uiteraard.
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
171
172
173
174
175
176
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
171
172
173
174
175
176
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--VERBINDING MAKEN MET DATABASE EN DATABSE SELECTEREN-->
<?php
// DIT WORDT NOG AANGEPAST UITERAARD !!
// 1. verbinding maken met database
$connection = mysql_connect("localhost","voorbeeld","voorbeeld");
if (!$connection) {
die("verbinding maken met database mislukt: ". mysql_error());
}
// 2. database selecteren
$db_select = mysql_select_db("users",$connection);
if (!$db_select) {
die("Selecteren van database mislukt: ". mysql_error());
}
?>
<!--EINDE VERBINDING MAKEN MET DATABASE EN DATABASE SELECTEREN-->
<?php require_once("includes/functions.php");?>
<!--CONTROLE OF ALLE VELDEN INGEVULD ZIJN-->
<?php
$errors = array();
$veld_verplicht = array(
'registratiecode',
'naam_zaak',
'aanhef',
'voorletters',
'achternaam',
'adres',
'huisnr',
'postcode',
'plaats',
'telefoonnummer',
'emailadres',
'gebruikersnaam',
'wachtwoord',
'herhaal_wachtwoord',
);
foreach($veld_verplicht as $veldnaam) {
if (!isset($_POST[$veldnaam]) || empty($_POST[$veldnaam])){
$errors[] = $veldnaam;
}
}
if (!empty($errors)) {
header("Location: registratie_error.php");
}
?>
<!--EINDE CONTROLE OF ALLE VELDEN INGEVULD ZIJN-->
<!--GEGEVENS UIT FORMULIER ONTVANGEN-->
<?php
$registratiecode_post = mysql_prep($_POST['registratiecode']);
$naam_zaak = mysql_prep($_POST['naam_zaak']);
$aanhef = mysql_prep($_POST['aanhef']);
$voorletters = mysql_prep($_POST['voorletters']);
$tussenvoegsel = mysql_prep($_POST['tussenvoegsel']);
$achternaam = mysql_prep($_POST['achternaam']);
$adres = mysql_prep($_POST['adres']);
$huisnr = mysql_prep($_POST['huisnr']);
$postcode = mysql_prep( $_POST['postcode']);
$plaats = mysql_prep($_POST['plaats']);
$telefoonnummer = mysql_prep( $_POST['telefoonnummer']);
$faxnummer = mysql_prep($_POST['faxnummer']);
$emailadres = mysql_prep($_POST['emailadres']);
$gebruikersnaam = mysql_prep($_POST['gebruikersnaam']);
$wachtwoord = mysql_prep($_POST['wachtwoord']);
$herhaal_wachtwoord = mysql_prep($_POST['herhaal_wachtwoord']);
?>
<!--EINDE GEGEVENS UIT FORMULIER ONTVANGEN-->
<!--WACHTWOORD HERHALING-->
<?php
if ($wachtwoord == $herhaal_wachtwoord){
"";}
else {
echo "wachtwoorden zijn niet hetzelfde";
exit;}
?>
<!--EINDE WACHTWOORD HERHALING-->
<!--WACHTWOORD ENCRYPTIE-->
<?php $hashed_wachtwoord= sha1($wachtwoord);?>
<!--EINDE WACHTWOORD ENCRYPTIE-->
<!--REGISTRATIECODE ENCRYPTIE-->
<?php $hashed_registratiecode_post= sha1($registratiecode_post);?>
<!--REGISTRATIECODE ENCRYPTIE-->
<!--REGISTRATIECODE VALIDEREN-->
<?php
$code_ophalen = "SELECT code_reg FROM registratiecode
WHERE code_reg = '$hashed_registratiecode_post'";
$resultaat = mysql_query($code_ophalen,$connection);
$num = mysql_num_rows($resultaat);
if ($num > 0) // registratiecode juist
{"";}
else {
echo "<p>U heeft een onjuiste registratiecode ingevoerd.</p>";
exit;}
?>
<!--EINDE REGISTRATIECODE VALIDEREN-->
<!--GEGEVENS IN TABEL PLAATSEN-->
<?php
$intabel= "INSERT INTO voorbeeld
(
klantnummer,
gebruikersnaam,
hashed_wachtwoord,
aangemeld_datum,
laatst_ingelogd,
naam_zaak,
aanhef,
voorletters,
tussenvoegsel,
achternaam,
adres,
huisnummer,
plaats,
postcode,
email,
telefoonnummer,
faxnummer,
)
VALUES
(
'$klantnummer',
'$gebruikersnaam',
'$hashed_wachtwoord',
NOW(),
NOW(),
'$naam_zaak',
'$aanhef',
'$voorletters',
'$tussenvoegsel',
'$achternaam',
'$adres',
'$huisnr',
'$plaats',
'$postcode',
'$emailadres',
'$telefoonnummer',
'$faxnummer',
)
";
if (mysql_query($intabel, $connection)) {
header("Location: nieuwe_gebruiker.php");
exit;
}
else {
echo "<p>blabla</p>";}
?>
<!--EINDE GEGEVENS IN TABEL PLAATSEN-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Verwerking formulier</title>
</head>
<body>
</body>
</html>
<?php
mysql_close($connection);
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<!--VERBINDING MAKEN MET DATABASE EN DATABSE SELECTEREN-->
<?php
// DIT WORDT NOG AANGEPAST UITERAARD !!
// 1. verbinding maken met database
$connection = mysql_connect("localhost","voorbeeld","voorbeeld");
if (!$connection) {
die("verbinding maken met database mislukt: ". mysql_error());
}
// 2. database selecteren
$db_select = mysql_select_db("users",$connection);
if (!$db_select) {
die("Selecteren van database mislukt: ". mysql_error());
}
?>
<!--EINDE VERBINDING MAKEN MET DATABASE EN DATABASE SELECTEREN-->
<?php require_once("includes/functions.php");?>
<!--CONTROLE OF ALLE VELDEN INGEVULD ZIJN-->
<?php
$errors = array();
$veld_verplicht = array(
'registratiecode',
'naam_zaak',
'aanhef',
'voorletters',
'achternaam',
'adres',
'huisnr',
'postcode',
'plaats',
'telefoonnummer',
'emailadres',
'gebruikersnaam',
'wachtwoord',
'herhaal_wachtwoord',
);
foreach($veld_verplicht as $veldnaam) {
if (!isset($_POST[$veldnaam]) || empty($_POST[$veldnaam])){
$errors[] = $veldnaam;
}
}
if (!empty($errors)) {
header("Location: registratie_error.php");
}
?>
<!--EINDE CONTROLE OF ALLE VELDEN INGEVULD ZIJN-->
<!--GEGEVENS UIT FORMULIER ONTVANGEN-->
<?php
$registratiecode_post = mysql_prep($_POST['registratiecode']);
$naam_zaak = mysql_prep($_POST['naam_zaak']);
$aanhef = mysql_prep($_POST['aanhef']);
$voorletters = mysql_prep($_POST['voorletters']);
$tussenvoegsel = mysql_prep($_POST['tussenvoegsel']);
$achternaam = mysql_prep($_POST['achternaam']);
$adres = mysql_prep($_POST['adres']);
$huisnr = mysql_prep($_POST['huisnr']);
$postcode = mysql_prep( $_POST['postcode']);
$plaats = mysql_prep($_POST['plaats']);
$telefoonnummer = mysql_prep( $_POST['telefoonnummer']);
$faxnummer = mysql_prep($_POST['faxnummer']);
$emailadres = mysql_prep($_POST['emailadres']);
$gebruikersnaam = mysql_prep($_POST['gebruikersnaam']);
$wachtwoord = mysql_prep($_POST['wachtwoord']);
$herhaal_wachtwoord = mysql_prep($_POST['herhaal_wachtwoord']);
?>
<!--EINDE GEGEVENS UIT FORMULIER ONTVANGEN-->
<!--WACHTWOORD HERHALING-->
<?php
if ($wachtwoord == $herhaal_wachtwoord){
"";}
else {
echo "wachtwoorden zijn niet hetzelfde";
exit;}
?>
<!--EINDE WACHTWOORD HERHALING-->
<!--WACHTWOORD ENCRYPTIE-->
<?php $hashed_wachtwoord= sha1($wachtwoord);?>
<!--EINDE WACHTWOORD ENCRYPTIE-->
<!--REGISTRATIECODE ENCRYPTIE-->
<?php $hashed_registratiecode_post= sha1($registratiecode_post);?>
<!--REGISTRATIECODE ENCRYPTIE-->
<!--REGISTRATIECODE VALIDEREN-->
<?php
$code_ophalen = "SELECT code_reg FROM registratiecode
WHERE code_reg = '$hashed_registratiecode_post'";
$resultaat = mysql_query($code_ophalen,$connection);
$num = mysql_num_rows($resultaat);
if ($num > 0) // registratiecode juist
{"";}
else {
echo "<p>U heeft een onjuiste registratiecode ingevoerd.</p>";
exit;}
?>
<!--EINDE REGISTRATIECODE VALIDEREN-->
<!--GEGEVENS IN TABEL PLAATSEN-->
<?php
$intabel= "INSERT INTO voorbeeld
(
klantnummer,
gebruikersnaam,
hashed_wachtwoord,
aangemeld_datum,
laatst_ingelogd,
naam_zaak,
aanhef,
voorletters,
tussenvoegsel,
achternaam,
adres,
huisnummer,
plaats,
postcode,
email,
telefoonnummer,
faxnummer,
)
VALUES
(
'$klantnummer',
'$gebruikersnaam',
'$hashed_wachtwoord',
NOW(),
NOW(),
'$naam_zaak',
'$aanhef',
'$voorletters',
'$tussenvoegsel',
'$achternaam',
'$adres',
'$huisnr',
'$plaats',
'$postcode',
'$emailadres',
'$telefoonnummer',
'$faxnummer',
)
";
if (mysql_query($intabel, $connection)) {
header("Location: nieuwe_gebruiker.php");
exit;
}
else {
echo "<p>blabla</p>";}
?>
<!--EINDE GEGEVENS IN TABEL PLAATSEN-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Verwerking formulier</title>
</head>
<body>
</body>
</html>
<?php
mysql_close($connection);
?>
De Function:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function mysql_prep( $value ) {
$magic_quotes_active = get_magic_quotes_gpc();
$new_enough_php = function_exists( "mysql_real_escape_string" );
if( $new_enough_php ) {
if( $magic_quotes_active ) { $value = stripslashes( $value ); }
$value = mysql_real_escape_string( $value );
} else {
if( !$magic_quotes_active ) { $value = addslashes( $value ); }
}
return $value;
}
function redirect_to( $location = NULL ) {
if ($location != NULL) {
header("Location: {$location}");
exit;
}
}
?>
function mysql_prep( $value ) {
$magic_quotes_active = get_magic_quotes_gpc();
$new_enough_php = function_exists( "mysql_real_escape_string" );
if( $new_enough_php ) {
if( $magic_quotes_active ) { $value = stripslashes( $value ); }
$value = mysql_real_escape_string( $value );
} else {
if( !$magic_quotes_active ) { $value = addslashes( $value ); }
}
return $value;
}
function redirect_to( $location = NULL ) {
if ($location != NULL) {
header("Location: {$location}");
exit;
}
}
?>
Gewijzigd op 11/11/2010 22:27:14 door Justin S
Iemand die me verder kan helpen?
Dit zou je als het goed is met een css kunnen doen die rodr gloed om de tabel
Reeds ingevulde velden kun je met een isset/$_POST constructie laten zien. Rode opmaak zou ik ook met css regelen.