Validarea formularului de validare a codului De la început până la terminare

Ca dezvoltator de aplicații web, validarea formularului este o parte esențială a muncii dvs. și nu ar trebui subestimată, deoarece ar putea duce la defecțiuni de securitate în aplicația dvs. Ar trebui să considerați că este o necesitate dacă încercați să oferiți o experiență profesională utilizatorilor finali.

În acest articol, vom trece prin biblioteca de validare a formularului încorporat în cadrul CodeIgniter.

Iată cele mai importante momente din articolul de astăzi:

  • Validarea formei de bază
  • Cascadă și pregătire
  • Mesaje de eroare personalizate
  • Comandă de apel validare personalizată
  • Configurație de validare

Treceți prin reguli de bază de validare

În această secțiune, vom trece prin conceptele de validare a formularului de bază în CodeIgniter.

Ca parte a acestui lucru, trebuie să creăm un controler și să vedem fișierele. Fișierul controlerului încarcă biblioteca de validare și rulează reguli de validare împotriva datelor din formularul trimis. Fișierul de vizualizare deține codul XHTML și îl vom păstra simplu pentru nevoile noastre.

Să mergem mai departe și să creăm aceste două fișiere.

Creați fișierul controlerului aplicatii / controlori / Validation.php cu următorul conținut.

load-> helper (array ('form', 'url')); // încărcați biblioteca form_validation $ this-> load-> library ('form_validation');  funcția publică basic () // câmpul obligatoriu de bază $ this-> form_validation-> set_rules ('text_field', 'Text Field One', 'required'); // câmpul obligatoriu de bază cu lungimea minimă $ this-> form_validation-> set_rules ('min_text_field', 'Text Field Two', 'required | min_length [8]'); // câmpul obligatoriu de bază cu lungimea maximă $ this-> form_validation-> set_rules ('max_text_field', 'Text Field Three', 'required | max_length [20]'); // câmp obligatoriu de bază cu lungime exactă $ this-> form_validation-> set_rules ('exact_text_field', 'Text Field Four', 'required | exact_length [12]'); // câmpul obligatoriu de bază dar numai alfabetele $ this-> form_validation-> set_rules ('alphabets_text_field', 'Text Field Five', 'required | alpha'); // câmpul obligatoriu de bază, dar numai alfanumeric $ this-> form_validation-> set_rules ('alphanumeric_text_field', 'Text Field Six', 'required | alpha_numeric'); // câmp de e-mail de bază cu validare a e-mailului $ this-> form_validation-> set_rules ('valid_email_field', 'Email Field', 'required | valid_email'); // câmp de parolă cu câmp de confirmare care se potrivește $ this-> form_validation-> set_rules ('password_field', 'Password One', 'required'); $ this-> form_validation-> set_rules ('password_confirmation_field', 'Câmpul de confirmare a parolei', 'obligatoriu de potrivire [parola_politicii]'); // câmp obligatoriu de bază cu validare IPv4 $ this-> form_validation-> set_rules ('valid_ip_field', 'Valid IP Field', 'required | valid_ip [ipv4]'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!";  cascadă funcțională publică () // câmp obligatoriu de bază cu reguli în cascadă $ this-> form_validation-> set_rules ('text_field', 'câmpul textului 1', 'obligat | alpha | min_length [8] | max_length [20] ); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!";  funcția publică prep () // câmpul obligatoriu de bază cu pregătirea trimmingului aplicat $ this-> form_validation-> set_rules ('min_text_field', 'Text Field Two', 'trim | required | min_length [8]'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!";  funcția publică custom_message () // câmpul obligatoriu de bază cu pregătirea trimmingului aplicat $ this-> form_validation-> set_rules ('alphabets_text_field', 'Text Field Five', 'required | alpha', array Introduceți câmpul Text Cinci! ',' Alpha '=>' Numai alfabetul vă rog! '); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!";  funcția publică custom_rule () // câmpul obligatoriu de bază cu pregătirea trimmingului aplicat $ this-> form_validation-> set_rules ('text_field', 'Text Field Five', 'callback_custom_validation'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!";  funcția publică custom_validation ($ field_value) if ($ field_value == "|| $ field_value == 'demo') $ this-> form_validation-> set_message ('custom_validation'," spammer! "); returnează FALSE; else return TRUE; funcția publică funcția () // dacă treceți ID-ul grupului, numai elementele din acel grup vor fi validate // $ this-> form_validation-> run (' ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form'); altceva // încărcați șablon de succes ... echo "It's All Good!" ;

Apoi, creați fișierul de vizualizare cerere / vizualizari / validate_form.php așa cum se arată mai jos.

  Exemplu de validare a formularului    

Exemplu de validare a formularului

Câmpul text unu (necesar)
Câmpul de text doi (lungimea minimă)
Câmpul text trei (lungimea maximă)
Câmpul de text patru (lungimea exactă)
Câmpul de text Cinci (Numai alfabete)
Șase câmp text (Numai alfanumeric)
Câmp de e-mail
Câmp de parolă
Parola de confirmare a parolei
Câmpul IP

Cu această configurație, ar trebui să vedeți un formular atunci când rulați http: // your-codeigniter-site / validation / basic în browserul dvs. Încercați să o trimiteți fără să completați câmpurile de formular și veți vedea lista cu mesaje de eroare! Nu vă faceți griji dacă nu înțelegeți cum funcționează cu totul în timp ce vom trece prin fiecare detaliu al codului.

Povestea începe cu __construi metodă.

funcția publică __construct () parent :: __ construct (); // formular de încărcare și ajutor url $ this-> load-> helper (array ('form', 'url')); // încărcați biblioteca form_validation $ this-> load-> library ('form_validation'); 

Întotdeauna am preferat să încărcați biblioteci și ajutoare comune în constructorul controlerului în sine, deoarece este un obicei frumos de a evita dublarea codului în altă parte în metodele controlerului. Exact asta am făcut mai sus - încărcăm formă și URL-ul ajutătorii, astfel încât să putem folosi metodele de utilitate oferite de acești ajutoare în tot restul aplicației.

Apoi, încărcăm biblioteca de validare a formularului astfel încât să ne permită să legăm regulile de validare a formularului pe elementele formularului, așa cum vom vedea în secțiunea următoare.

Să trecem prin codul de bază metodă. Ce face această metodă? Dacă îl apelați cu OBȚINE , va afișa formularul și dacă a fost apelat utilizând POST , aplică reguli de validare a datelor trimise și afișează mesaje de eroare, dacă există, împreună cu formularul.

funcția publică bază () // câmpul obligatoriu de bază $ this-> form_validation-> set_rules ('text_field', 'câmpul textului 1', 'necesar'); // câmpul obligatoriu de bază cu lungimea minimă $ this-> form_validation-> set_rules ('min_text_field', 'Text Field Two', 'required | min_length [8]'); // câmpul obligatoriu de bază cu lungimea maximă $ this-> form_validation-> set_rules ('max_text_field', 'Text Field Three', 'required | max_length [20]'); // câmp obligatoriu de bază cu lungime exactă $ this-> form_validation-> set_rules ('exact_text_field', 'Text Field Four', 'required | exact_length [12]'); // câmpul obligatoriu de bază dar numai alfabetele $ this-> form_validation-> set_rules ('alphabets_text_field', 'Text Field Five', 'required | alpha'); // câmpul obligatoriu de bază, dar numai alfanumeric $ this-> form_validation-> set_rules ('alphanumeric_text_field', 'Text Field Six', 'required | alpha_numeric'); // câmp de e-mail de bază cu validare a e-mailului $ this-> form_validation-> set_rules ('valid_email_field', 'Email Field', 'required | valid_email'); // câmp de parolă cu câmp de confirmare care se potrivește $ this-> form_validation-> set_rules ('password_field', 'Password One', 'required'); $ this-> form_validation-> set_rules ('password_confirmation_field', 'Câmpul de confirmare a parolei', 'obligatoriu de potrivire [parola_politicii]'); // câmp obligatoriu de bază cu validare IPv4 $ this-> form_validation-> set_rules ('valid_ip_field', 'Valid IP Field', 'required | valid_ip [ipv4]'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!"; 

Pe măsură ce am încărcat deja biblioteca de validare a formularului în constructor, îl puteți accesa utilizând $ This-> form_validation convenţie.

set_rules metoda este folosită pentru a lega o regulă de validare pe un câmp de formular. În general, este nevoie de trei argumente:

  • Primul argument este numele unui câmp de formular.
  • Al doilea argument este o etichetă care este utilizată pentru a trimite un câmp de formă în timp ce afișează mesajul de eroare pentru acel câmp.
  • Al treilea argument este regula pe care doriți să o aplicați pe un câmp de formular. Biblioteca de validare a formularului conține multe reguli încorporate pe care le puteți utiliza deja.

Să trecem prin câteva dintre aceste reguli pe măsură ce le-am folosit în metoda de bază.

Una dintre cele mai frecvent utilizate reguli este necesar regulă, care face obligatoriu un câmp de formă.

// camp obligatoriu $ this-> form_validation-> set_rules ('text_field', 'Text Field One', 'required');

În continuare, dacă doriți să creați un câmp de formular cu o anumită lungime, puteți utiliza funcția MIN_LENGTH și lungime maxima norme.

// câmpul obligatoriu de bază cu lungimea minimă $ this-> form_validation-> set_rules ('min_text_field', 'Text Field Two', 'required | min_length [8]'); // câmpul obligatoriu de bază cu lungimea maximă $ this-> form_validation-> set_rules ('max_text_field', 'Text Field Three', 'required | max_length [20]');

Primul se asigură că min_text_field câmpul de formular este un câmp obligatoriu și utilizatorul trebuie să introducă cel puțin opt caractere în acesta. Cel de-al doilea pune o limită a caracterului maxim care poate fi introdus în max_text_field câmp text, pe lângă faptul că este un domeniu obligatoriu.

S-ar putea să fi observat că am folosit-o | operatorului să aplice simultan mai multe reguli. Se numește cascadă și ne vom întoarce mai târziu.

Pe de altă parte, dacă doriți să creați un câmp de formă cu o lungime exactă, puteți utiliza exact_length regulă.

// câmp obligatoriu de bază cu lungime exactă $ this-> form_validation-> set_rules ('exact_text_field', 'Text Field Four', 'required | exact_length [12]');

Ce se întâmplă dacă doriți să validați un câmp de formular numai la alfabete sau alfanumerice?

// câmpul obligatoriu de bază dar numai alfabetele $ this-> form_validation-> set_rules ('alphabets_text_field', 'Text Field Five', 'required | alpha'); // câmpul obligatoriu de bază, dar numai alfanumeric $ this-> form_validation-> set_rules ('alphanumeric_text_field', 'Text Field Six', 'required | alpha_numeric');

Următorul candidat este validarea e-mailului.

// câmp de e-mail de bază cu validare a e-mailului $ this-> form_validation-> set_rules ('valid_email_field', 'Email Field', 'required | valid_email');

Apoi, chibrituri regula vă permite să comparați valoarea unui câmp de formular cu o valoare a unui alt câmp de formă. Cel mai bun exemplu este câmpul de parolă, care trebuie să corespundă câmpului de confirmare a parolei atunci când trimiteți formularul.

// câmpul de parolă cu regula de potrivire a câmpului de confirmare $ this-> form_validation-> set_rules ('password_field', 'Password One', 'required'); $ this-> form_validation-> set_rules ('password_confirmation_field', 'Câmpul de confirmare a parolei', 'obligatoriu de potrivire [parola_politicii]');

Ultimul exemplu din metoda noastră de bază este validarea adresei IP.

valid_ip regula validează adresa IP față de primul argument trecut. În următorul exemplu, căutăm doar adrese IP IPv4!

// câmp obligatoriu de bază cu validare IPv4 $ this-> form_validation-> set_rules ('valid_ip_field', 'Valid IP Field', 'required | valid_ip [ipv4]');

Deci, este vorba despre validarea de bază în CodeIgniter.

Cum funcționează Cascading și Prepping

În această secțiune, vom explora cascadarea și pregătirea, care vă permit să combinați mai multe reguli de validare într-o singură etapă.

De fapt, aș spune că am folosit cu atenție în cascadă exemplele noastre anterioare. Amintiți-vă că operatorul de conducte care a fost folosit pentru a combina mai multe reguli - și da, așa-numitele reguli de validare în cascadă.

Luați codul cascadă metodă.

cascadă de funcții publice () // câmp obligatoriu de bază cu reguli cascadă $ this-> form_validation-> set_rules ('text_field', 'câmpul textului unu', 'obligatoriu | alfa | min_length [8] | max_length [20]'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!"; 

Așa cum am arătat în exemplul de mai sus, am aplicat patru reguli de validare separate de | operator la text_field casetă de text. Deci, trebuie să treacă prin fiecare regulă pentru validarea formularului pentru a reuși în acest caz!

Faceți o încercare și vedeți cum funcționează!

Apoi, există o pregătire care vă permite să aplicați anumite operații asupra datelor trimise. De cele mai multe ori, doriți să eliminați spațiile de conducere și de sfârșit în datele trimise de utilizator. Probabil primul lucru care ți-a venit în minte în acest caz este să folosești funcția de decupare, iar vestea bună este că o poți folosi!

Asta e exact ceea ce avem Prep metoda face.

funcția publică prep () // câmpul obligatoriu de bază cu pregătirea trimmingului aplicat $ this-> form_validation-> set_rules ('min_text_field', 'Text Field Two', 'trim | necesar | min_length [8]'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!"; 

După cum puteți vedea, am folosit cuvântul tunde în plus față de regulile de validare. Deci, datele sunt trimise mai întâi și apoi vor trece prin celelalte reguli de validare. De fapt, puteți utiliza orice funcție PHP care să ia un singur argument conform documentației CodeIgniter.

Încercați să rulați exemplul nostru adăugând câteva spații înclinate și vedeți cum merge.

Personalizarea mesajelor de eroare

Dacă ați avut ocazia să rulați exemplele de mai sus, este posibil să fi observat că mesajele de eroare afișate utilizatorului sunt destul de sistematice și generate de mașină. Poate doriți să fiți mai creativi și să le schimbați în anumite cazuri.

Să vedem cum puteți schimba mesajul de eroare pentru orice regulă de validare. Trageți în codul custom_message metodă.

funcția publică custom_message () // câmp cu mesaj de eroare personalizat $ this-> form_validation-> set_rules ('alphabets_text_field', 'Text Field Five', 'required' alpha ', array Cinci! ',' Alpha '=>' Numai alfabetul vă rog! ')); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!"; 

Luați notă de al patrulea argument furnizat set_rules metodă. Acesta conține o serie de mesaje de validare personalizate pentru fiecare regulă de validare, iar cheia fiecărui element de matrice este chiar regula de validare.

array ('required' => 'Vă rugăm introduceți câmpul de text!', 'alpha' => 'Numai alfabetul vă rog!')

Faceți o încercare și ar trebui să vedeți mesajele personalizate de eroare! Destul de cool, huh?

Verificări vocale personalizate personalizate

Deși biblioteca de validare încorporată oferă deja o serie de reguli de validare, este întotdeauna nevoie să creați una personalizată în activitatea de dezvoltare de zi cu zi. Exact asta vom discuta în această secțiune.

Pentru a demonstra acest lucru, vom crea un apel de validare personalizat și mai târziu vom vedea cum să îl folosim împreună cu set_rules metodă.

Pentru a începe, să aruncăm o privire rapidă asupra custom_rule metodă.

funcția publică custom_rule () // câmpul cu apel de validare personalizat a trecut $ this-> form_validation-> set_rules ('text_field', 'Text Field Five', 'callback_custom_validation'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!"; 

Nu e diferit de cel obișnuit set_rules apel, cu excepția faptului că am furnizat apelul de validare personalizat custom_validation în locul oricărei reguli de validare de bază. Cel mai important lucru pe care trebuie să îl rețineți este că trebuie să prefixați apelul de validare personalizat cu suna inapoi_ când îl transmiteți ca argument.

Apoi, să implementăm apelul de validare personalizat.

funcția publică custom_validation ($ field_value) if ($ field_value == "|| $ field_value == 'demo') $ this-> form_validation-> set_message ('custom_validation', 'Haide, nu acționa ca spammer! "); returnează FALSE; altceva returnează TRUE;

Când se solicită apelul de validare personalizat, valoarea introdusă de utilizator va fi trecută ca primul argument. Asa ca $ FIELD_VALUE conține o valoare introdusă de un utilizator, împotriva căruia puteți implementa logica personalizată de validare.

În exemplul de mai sus, ar trebui să vedeți mesajul de eroare dacă introduceți o valoare necompletată sau Demo în câmpul de text Câmpul de text 5. Este important să rețineți că atunci când setați mesajul de eroare utilizând set_message , primul argument este numele metodei de inversare a apelului de validare personalizată în sine.

Și asta e povestea apelurilor personalizate de validare.

Nu în ultimul rând, configurația de validare merită o atenție pe măsură ce ne îndreptăm spre încheierea acestui articol.

Configurarea validării

Ca dezvoltator CodeIgniter, trebuie să fiți deja familiarizați cu config , care vă permite să configurați diferite aspecte ale aplicației CodeIgniter.

De exemplu, database.php vă permite să definiți setările legate de bază de date, în timp ce autoload.php vă permite să definiți componentele care ar trebui să fie încărcate automat în timpul procesului de boot al unei aplicații.

În același mod, puteți crea form_validation.php fișier în config și utilizați acel fișier pentru a defini reguli de validare la nivel de aplicație care pot fi utilizate la nivel global. Dacă asta ți se pare străin, nu există o modalitate mai bună de ao înțelege decât de a privi un exemplu practic.

Creați fișierul application / config / form_validation.php cu următorul conținut.

 'text_field', 'label' => 'Câmpul textului unu', 'reguli' => 'necesar'), array ('field' => 'min_text_field', 'label' => 'necesar' min_length [8] '), array (' field '=>' max_text_field ',' label '=>' Field 3 ',' rules '=>' required | max_length [20] ');

Acum, hai să ne uităm rapid la ceea ce avem configurație metoda arata ca.

($ this-> form_validation-> run () =) (=) (=) (= = FALSE) $ this-> load-> view ('validate_form');  altceva // încărcați șablonul de succes ... echo "Totul este bun!"; 

Încercați să rulați http: // site-ul dvs. de codificare a codului / validare / configurație și trimiteți un formular gol. Veți vedea mesaje de eroare pentru trei câmpuri de formular! Dar așteptați, de unde vin, din moment ce nu am stabilit nici o regulă de validare în metoda noastră de configurare, în primul rând?

Utilizatorii cu ochi ascuțiți ar fi observat că sunt preluați automat din fișierul de configurare de validare definit la application / config / form_validation.php. Nu-i așa de uimitor? Acesta vă permite să centralizați regulile într-un singur loc și să reduceți duplicarea codului în metodele de acțiune.

De fapt, puteți grupa regulile și aplica validarea în câmpurile unui anumit grup. Să vedem cum să facem asta.

Înlocuiți codul în application / config / form_validation.php cu următoarele.

 array ('field' => 'array (' field '=>' text_field ',' label '=> min_text_field ',' label '=>' Textul câmpului doi ',' rules '=>' required | min_length [8] '), array (' , 'rules' => 'cerut | max_length [20]')));

În tine configurație , găsiți următoarea linie:

dacă ($ this-> form_validation-> run () == FALSE)

Și înlocuiți-l cu:

dacă ($ this-> form_validation-> run ('group_one') == FALSE)

Acum, încercați să trimiteți un formular gol și veți vedea numai o eroare Câmpul textului unu. Asta pentru că am trecut group_one ca id de grup, deci numai elementele din acel grup vor fi validate.

În cele din urmă, să aruncăm o privire asupra tipului de configurație care vă permite să definiți reguli bazate pe adresa URL.

Înlocuiți codul în application / config / form_validation.php cu următorul cod.

$ config = array ('validare / configurare' => array (array ('field' => 'max_text_field', 'label' => ));

În acest tip de configurație, trebuie să utilizați o combinație a numelui controlerului și a denumirii metodei separate de către / caracter. În acest fel, ați putea defini reguli pentru mai multe metode de acțiune simultan.

Acum, ar trebui să vedeți mesajul de eroare pentru Câmpul de text trei ar trebui să încercați să trimiteți un formular gol la adresa http: // your-codeigniter-site / validation / configuration.

Și asta termină povestea de configurare a validării și a acestui articol, de asemenea!

Concluzie

În acest articol, am discutat temeinic validarea formularului în CodeIgniter. 

Am pornit călătoria noastră cu regulile de validare de bază și am trecut apoi la subiecte mai avansate, cum ar fi validarea cascadă, pregătirea și configurarea.

Sper că v-ați bucurat de acest articol și vă puteți împărtăși opiniile dvs. valoroase folosind feedul de mai jos!

Cod