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:
Î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-mailCâmp de parolăParola de confirmare a paroleiCâ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:
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.
Î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.
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?
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.
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!
Î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!