In subcapitolul anterior, am realizat validarea datelor. Ce se intampla insa daca utilizatorul completeaza intregul formular corect, dar greseste doar intr-un loc, sau in cateva locuri ?
Pagina se reincarca, avand un mesaj de eroare pentru campul sau campurile gresite, si formularul gol. Asta inseamna ca el trebuie sa completeze toate datele formularului de la capat.
Acest lucru intr-o aplicatie reala nu este permis sa se intample. Prin urmare, odata cu validarea datelor, trebuie sa pastram aceste date in formular.
Pastrarea datelor in formular se face diferit in functie de fiecare control din formular:
- pentru elementele de tip input text se pastreaza valoarea cu ajutorul atributului value
Ex: <input type="text" name="prenume" value="Ion" />
- pentru input checkbox si radio se pastreaza cu ajutorul atributului checked="checked"
Ex: <input type="radio" name="sex" value="Male">
<input type="radio" name="sex" checked="checked" value="Female">
- pentru tagul select se pastreaza optiunile selectate cu atributul selected="selected" in cadrul tagurilor option
Ex:
<select name="lang" size="3">
<option value="en">Engleza</option>
<option value="ro" selected="selected">Romana</option>
<option value="es">Spaniola</option>
<option value="de">Germana</option>
</select>
- pentru tagul textarea se scrie textul ce trebuie pastrat intre tagul de inceput si cel de sfarsit
Ex:
<textarea name="mesaj">
Text aici
</textarea>
Un script .php ce proceseaza un formular, asa cum il avem noi organizat, are una din cele 3 ipostaze:
1. Scriptul este incarcat prima data in browser. Deci nu are date trimise prin get sau post. In aceasta ipostaza scriptul ofera utilizatorului doar formularul de completat.
2. Utilizatorul a apasat butonul de submit, deci browserul acceseaza aceeasi pagina dar de data asta cu date trimise prin post (de exemplu). In script verificam daca s-a apasat butonul de submit, si incepem sa
extragem informatia din post in variabile, si sa validam datele. In cazul in care sunt erori, populam un array cu aceste erori, si reafisam formularul completat cu datele primite din POST (adica cu datele pe care utilizatorul le-a completat la pasul 1).
3. Nu exista erori, afisam mesajul de multumire, procesam informatiile.
Nota
| La pasul 2 voi folosi un array ce contine datele cu care populam formularul. Acest array va fi in general $_GET sau $_POST dar prefer sa-l numesc $formData care in general va fi acelasi lucru cu $_GET sau $_POST |
inregistrare.php1
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
177
178
179
180
181
182
183
| <?php
$formData = array();
$formData["prenume"] = '';
$formData["nume"] = '';
$formData["utilizator"] = '';
$formData["parola"] = '';
$formData["email"] = '';
$formData["mesaj"] = '';
$formData["hobby"] = array();
$formData["limbi_straine"] = array();
$proceseaza = 0;
if (isset($_POST["buton"])) {
$erori = array();
$formData = $_POST;
$prenume = $_POST["prenume"];
$nume = $_POST["nume"];
$utilizator = $_POST["utilizator"];
$parola = $_POST["parola"];
$email = $_POST["email"];
if (isset($_POST["hobby"])) {
$hobby = $_POST["hobby"];
} else {
$hobby = '';
}
if (isset($_POST["limbi_straine"])) {
$limbi_straine = $_POST["limbi_straine"];
} else {
$limbi_straine = '';
}
if (!$prenume) {
$erori[] = 'Completeaza prenume';
} else if (!preg_match('/^[a-zA-Z\-\s\']{2,20}$/', $prenume)) {
$erori[] = 'Prenume invalid';
}
if (!$nume) {
$erori[] = 'Completeaza nume';
} else if (!preg_match('/^[a-zA-Z\-\s\']{2,20}$/', $nume)) {
$erori[] = 'Nume invalid';
}
if (!$utilizator) {
$erori[] = 'Completeaza utilizator';
} else if (!preg_match('/^[a-zA-Z\-0-9]{4,15}$/', $utilizator)) {
$erori[] = 'Utilizator invalid';
}
if (!$parola) {
$erori[] = 'Completeaza parola';
} else if (preg_match('/[\'\"]/', $parola)) {
$erori[] = 'Parola contine caractere invalide';
}
if (!$email) {
$erori[] = 'Completeaza emailul';
} else if (!preg_match('/(?i)[a-z0-9\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/', $email)) {
$erori[] = 'Email incorect';
}
if (!is_array($hobby)) {
$erori[] = 'Completeaza cel putin un hobby';
}
if (!is_array($limbi_straine)) {
$erori[] = 'Completeaza cel putin o limba straina';
}
if (!isset($erori) or !count($erori)) {
$proceseaza = 1;
}
if ($proceseaza) {
if (is_array($hobby)) {
$hobby = join(',', $hobby);
}
if (is_array($limbi_straine)) {
$limbi_straine = join(',', $limbi_straine);
}
echo '<br /><hr><br />';
echo 'Va multumim pentru completarea formularului !';
echo '<br />';
echo 'Datele Dvs sunt: <br /><br />';
echo 'Nume: ' . $prenume . ' ' . $nume;
echo '<br />';
echo 'Utilizator: ' . $utilizator;
echo '<br />';
echo 'Parola: ' . $parola;
echo '<br />';
echo 'Email: ' . $email;
echo '<br />';
echo 'Hobby: ' . $hobby;
echo '<br />';
echo 'Limbi straine: ' . $limbi_straine;
echo '<br />';
echo '<br /><hr><br />';
}
if (isset($erori)) {
foreach ($erori as $eroare) {
echo $eroare;
echo '<br />';
}
}
}
?>
<br /><br />
<form method="post" action="">
Prenume <br /> <input type="text" name="prenume" value="<?php echo $formData["prenume"] ?>" /> <br />
Nume <br /> <input type="text" name="nume" value="<?php echo $formData["nume"] ?>" /> <br />
Utilizator <br /> <input type="text" name="utilizator" value="<?php echo $formData["utilizator"] ?>" /> <br />
Parola <br /> <input type="password" name="parola" value="<?php echo $formData["parola"] ?>" /> <br />
Email <br /> <input type="text" name="email" value="<?php echo $formData["email"] ?>" /> <br />
Hobby <br />
Inot <input type="checkbox" name="hobby[]" value="inot" <?php if (isset($formData["hobby"]) && in_array('inot', $formData["hobby"])) echo 'checked="checked"' ?> /> <br />
Ski <input type="checkbox" name="hobby[]" value="ski" <?php if (isset($formData["hobby"]) && in_array('ski', $formData["hobby"])) echo 'checked="checked"' ?> /> <br />
Alergat <input type="checkbox" name="hobby[]" value="alergat" <?php if (isset($formData["hobby"]) && in_array('alergat', $formData["hobby"])) echo 'checked="checked"' ?> /> <br />
Cantat <input type="checkbox" name="hobby[]" value="cantat" <?php if (isset($formData["hobby"]) && in_array('cantat', $formData["hobby"])) echo 'checked="checked"' ?> /> <br />
<br />
Limbi straine vorbite <br />
<select name="limbi_straine[]" multiple="multiple">
<option value="ro" <?php if (isset($formData["limbi_straine"]) && in_array('ro', $formData["limbi_straine"])) echo 'selected="selected"' ?> >Romana</option>
<option value="en" <?php if (isset($formData["limbi_straine"]) && in_array('en', $formData["limbi_straine"])) echo 'selected="selected"' ?> >Engleza</option>
<option value="es" <?php if (isset($formData["limbi_straine"]) && in_array('es', $formData["limbi_straine"])) echo 'selected="selected"' ?> >Spaniola</option>
<option value="de" <?php if (isset($formData["limbi_straine"]) && in_array('de', $formData["limbi_straine"])) echo 'selected="selected"' ?> >Germana</option>
</select>
<br /><br />
Mesaj <br />
<textarea name="mesaj" cols="20" rows="20"><?php echo $formData["mesaj"] ?></textarea>
<br /><br />
<input type="submit" name="buton" value="Trimite" />
<br />
</form> |