vragen m.b.t. verwerking formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter van den Dungen

Peter van den Dungen

09/11/2010 17:43:28
Quote Anchor link
Ik ben bezig met een registratie-formulier. Helaas loop ik vast bij de verwerking hiervan. Zouden jullie hier even naar willen kijken? Andere opmerkingen zijn ook zeer welkom, kan ik weer van leren.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<!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);
?>


De Function:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
        }
}

?>
Gewijzigd op 11/11/2010 22:27:14 door Justin S
 
PHP hulp

PHP hulp

26/01/2025 02:04:01
 
Peter van den Dungen

Peter van den Dungen

11/11/2010 22:14:00
Quote Anchor link
Iemand die me verder kan helpen?
 
Jordi Kroon

Jordi Kroon

11/11/2010 22:18:12
Quote Anchor link
Dit zou je als het goed is met een css kunnen doen die rodr gloed om de tabel
 
Obelix Idefix

Obelix Idefix

11/11/2010 22:44:58
Quote Anchor link
Zou het in 1 bestand doen. Je begint met het stuk invoercontrole, etc. Als aan al je eisen is voldaan zorg je voor afhandeling en anders laat je het formulier zien, inclusief foutmelding(en).
Reeds ingevulde velden kun je met een isset/$_POST constructie laten zien. Rode opmaak zou ik ook met css regelen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.