PHP si MySql (Programator Web 2)

DOCUMENTATIE CURS

Validarea datelor

Validarea datelor inseamna obligarea utilizatorului sa trimita doar date intr-un format permis. De exemplu: numele sa nu contina decat litere mari, mici spatiu si cratima, numarul de telefon sa contina doar cifre (eventual si punct), numele de utilizator sa fie intre 5 si 10 caractere, parola sa fie minim 7 caractere, etc.

Intr-o aplicatie reala, validarea datelor este obligatorie din urmatoarele motive:
  • Securitate
  • Consistenta bazei de date
In general, validarea datelor cu PHP se face cu ajutorul expresiilor regulate (regex). Vezi subcapitolul 5.8 Regular Expressions (REGEX) Scriptul de inregistrare devine acum:



inregistrare.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
<?php
if (isset($_POST["buton"])) {
  $erori = array();
  $proceseaza = 0;
  //  print_r($_POST);
  // preluarea variabilelor din POST
  $prenume = $_POST["prenume"];
  $nume = $_POST["nume"];
  $utilizator = $_POST["utilizator"];
  $parola = $_POST["parola"];
  $email = $_POST["email"];
  $hobby = $_POST["hobby"];
  $limbi_straine = $_POST["limbi_straine"];
  // verificarea erorilor
  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';
  }
  // daca nu sunt erori, variabila $proceseaza devine 1
  if (!count($erori)) {
    $proceseaza = 1;
  }
  // daca variabila proceseaza este 1, procesam (in cazul nostru afisam) datele si mesajul de multumire
  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 />';
  } 
  // daca sunt erori, le afisam
  if (isset($erori)) {
    foreach ($erori as $eroare) {
      echo $eroare;
      echo '<br />';
    } /// end foreach
  } //// end if(isset($erori)) 
 } /// end if  (isset($_POST["buton"])) {
?>
<br /><br />
<form method="post" action="">
Prenume <br /> <input type="text" name="prenume" value="" /> <br />
Nume <br /> <input type="text" name="nume" value="" /> <br />
Utilizator <br /> <input type="text" name="utilizator" value="" /> <br />
Parola <br /> <input type="password" name="parola" value="" /> <br />
Email <br /> <input type="text" name="email" value="" /> <br />
Hobby <br />
Inot<input type="checkbox" name="hobby[]" value="inot" />
Ski<input type="checkbox" name="hobby[]" value="ski" />
Alergat<input type="checkbox" name="hobby[]" value="alergat" />
Cantat<input type="checkbox" name="hobby[]" value="cantat" />
<br /><br />
Limbi straine vorbite <br />
<select name="limbi_straine[]" multiple="multiple">
    <option value="ro">Romana</option>
    <option value="en">Engleza</option>
    <option value="es">Spaniola</option>
    <option value="de">Germana</option>
</select>
<br /><br />
Mesaj <br />
<textarea name="mesaj" cols="20" rows="20"></textarea>
<br /><br />
<input type="submit" name="buton" value="Trimite" />
<br />
</form>


© 2006-2012 Crystal Mind Academy. All rights reserved