E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Introducere in PHP (24)

XIV. Expresii regulate, partea a II-a

17.02.2009
XIV. Expresii regulate, partea a II-a

Validarile din tutorialele precedente au fost simple, constand in mare parte din verificarea existentei unor date de intrare si a corectitudinii lor. Insa, de cele mai multe ori, verificarile pe care le vei face vor fi ceva mai complexe - de exemplu validarea unei adrese de email sau a unui numar de telefon. Pentru a realiza aceste sarcini mai complicate, programatorii au la dispozitie expresiile regulate.

Total vizualizari: 4655 4655 afisari   |   Comentarii  0   |   Rating   |   (1 vot)   |   Timp necesar: 20 min 20 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

Sursa:  www.devzone.zend.com  
Autor:  Vikram Vaswani
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1 2 »
comenteaza printeaza

Inapoi la clase

Acum ca stii cate ceva despre verificarea datelor, ar trebui sa-ti fie destul de clar ca te vei lovi de acest lucru destul de des. In concluzie, poate fi util sa iti creezi o serii de functii pentru validari, pe care sa le poti refolosi in functie de situatie. In continuare vom face intocmai acest lucru - vom crea o clasa cu metode pentru verificarea informatiilor si manipularea erorilor, apoi vom utiliza aceasta clasa pentru a valida un formular.

Iata definitia clasei class.formValidator.php in PHP 5. Pentru a o adapta la PHP 4 trebuie sa stergi specificatorii de acces public si privat din definitia functiilor si sa inlocuiesti specificatorul privat cu var pentru membrul errorList. Restul scriptului va rula la fel indiferent de versiunea PHP.

<?php
// PHP 5
 
// definitia clasei
// clasa ce contine functii de validare date 
class formValidator {
 
    // defineste proprietatile
    private $_errorList;
 
    // defineste metodele
    // constructor
    public function __construct() {
        $this->resetErrorList();
    }
 
    // initializeaza lista de erori
    private function resetErrorList() {
        $this->_errorList = array();
    }
 
    // verifica daca input-ul este un sir de caractere vid
    public function isEmpty($value) {
        return (!isset($value) || trim($value) == '') ? true : false;
    }
 
    // verifica daca input-ul este un sir de caractere
    public function isString($value) {
        return is_string($value);
    }
 
    // verifica daca input-ul este un numar
    public function isNumber($value) {
        return is_numeric($value);
    }
 
    // verifica daca input-ul este un numar intreg
    public function isInteger($value) {
        return (intval($value) == $value) ? true : false;
    }
 
    // verifica daca input-ul este alfanumeric
    public function isAlpha($value) {
        return preg_match('/^[a-zA-Z]+$/', $value);
    }
 
   // verifica daca input-ul este un numar dintr-un interval dat
    public function isWithinRange($value, $min, $max) {
        return (is_numeric($value) && $value >= $min && $value <= $max) ? true : false;
    }
    
    // verifica daca input-ul este o adresa de email
    public function isEmailAddress($value) {
        return eregi('^([a-z0-9])+([.a-z0-9_-])*@([a-z0-9_-])+(.[a-z0-9_-]+)*.([a-z]{2,6})$', $value);
    }
 
    // verifica daca o valoare exista intr-un vector
    public function isInArray($array, $value) {
        return in_array($value, $array);
    }
 
    // adauga o eroare in lista de erori 
    public function addError($field, $message) {
        $this->_errorList[] = array('field' => $field, 'message' => $message);
    }
 
    // verifica daca exista erori in lista 
    public function isError() {
        return (sizeof($this->_errorList) > 0) ? true : false;
    }
 
    // returneaza lista de erori 
    public function getErrorList() {
        return $this->_errorList;
    }
 
    // destructor
    // distruge lista de erori
    public function __destruct() {
        unset($this->_errorList);
    }
 
// sfarsitul clasei
}
 
?>

Dupa cum poti vedea, clasa formValidator este alcatuita din doua tipuri de functii.

Primul tip este reprezentat de o serie de metode care accepta date pentru a fi validate si returneaza o valoare booleana. Aceste metode sunt:

  • isEmpty() - verifica daca input-ul este un sir vid de caractere
  • isString() - verifica daca input-ul este un sir de caractere
  • isNumber() - verifica daca input-ul este o valoare numerica
  • isInteger() - verifica daca input-ul este un numar intreg
  • isAlpha() - verifica daca input-ul este alfanumeric
  • isEmailAddress() - verifica daca input-ul este o adresa de email
  • isWithinRange() - verifica daca input-ul este un numar dintr-un interval dat
  • isInArray() - verifica daca o valoare exista intr-un vector

In mod evident, lista de mai sus poate fi completata si cu alte metode, in functie de necesitatile fiecaruia.

In celelalte tutoriale de PHP din cadrul aceleiasi serii, o eroare intalnita determina intreruperea executiei scriptului prin apelul functiei die(). Intr-o aplicatie reala, astfel de terminari abrupte nu sunt o idee prea buna; in schimb, datele introduse de utilizator sunt procesate in continuare, iar la final, sunt afisate toate erorile intalnite.

Aici intervine cea de-a doua componenta a clasei formValidator: un array ce memoreaza toate erorile generate de catre procesul de validare. In plus, acest vector este insotit de o serie de metode ce au ca scop afisarea sau manipularea elementelor sale:

  • isError() - verifica daca exista vreo eroare in lista
  • addError() - adauga eroare in lista
  • getErrorList() - returneaza lista curenta de erori
  • resetErrorList() - reseteaza lista

In acest moment, e posibil sa gasesti toate aceste metode putin confuze. In continuare poti vedea un exemplu concret care are rolul de a clarifica putin lucrurile. In primul, avem un formular HTML standard:

<html>
<head></head>
<body>
 
<b>Campurile marcate cu * sunt obligatorii.</b>
 
<form action = 'processor.php' method = 'post'>
<b>Nume*:</b>
<br />
<input type = 'text' name = 'name' size = '15'>
<p />
 
<b>Varsta*:</b>
<br />
<input type = 'text' name = 'age' size = '2' maxlength = '2'>
<p />
 
<b>Email*:</b>
<br />
<input type = 'text' name = 'email' size = '30'>
<p />
 
<b>Sex*:</b>
<br />
<input type = 'radio' name = 'sex' value = 'm'>M
<input type = 'radio' name = 'sex' value = 'f'>F
<p />
 
<b>Culoarea preferata*:</b>
<br />
<select name = 'color'>
<option value = ''>-alege o culoare-</option>
<option value = 'r'>Rosu</option>
<option value = 'g'>Verde</option>
<option value = 'b'>Albastru</option>
<option value = 's'>Argintiu</option>
</select>
<p />
 
<b>Asigurare*:</b>
<br />
<select name = 'insurance'>
<option value = ''>-select one-</option>
<option value = '1'>Basic</option>
<option value = '2'>Extinsa</option>
<option value = '3'>Premium</option>
</select>
<p />
 
<b>Alte optiuni:</b>
<br />
<input type = 'checkbox' name = 'options[]' value = 'PSTR'>Servodirectie
<input type = 'checkbox' name = 'options[]' value = 'AC'>Aer conditionat
<input type = 'checkbox' name = 'options[]' value = '4WD'>Tranctiune pe 4 roti
<input type = 'checkbox' name = 'options[]' value = 'SR'>Geamuri electrice
<input type = 'checkbox' name = 'options[]' value = 'LUP'>Interior din piele
<p />
<input type = 'submit' name = 'submit' value = 'Save'>
</form>
 
</body>
</html>
Pagina:
1 2 »
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(1 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
5565
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
5545
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
5385
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
5365
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
5120
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Python Sony Vegas Fotografie Lightroom Flash CSS JSON Gimp SWF RoR Photoshop XHTML Java Powerpoint Outlook XML Fireworks Javascript MySQL PSD AJAX Bridge SEO StyleSheet Dreamweaver Excel Swift 3D Ruby on Rails Verilog COREL DRAW Vista Word PHP Action Script HTML Illustrator
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software