Voi începe cu o mică deviere.
Și totuși spune în mod corect, și capacitatea de a face unele forumuri (în special UNIX-ovyh) tipa direct - RTFM! Oricine nu înțelege întrebarea ochem - RTFM înseamnă „citește nenorocitele înregistrările!“. Asta e tot ce sunt de fapt aici la ceea ce: studierea și ceva încercând să scrie pe cadru, Yii, problema a apărut de intrare de filtrare din diferite caracterul „rău intenționat“ (AAL XSS-atac) și primul lucru care a venit în minte - este de a scrie un filtru (care Am făcut încă), dar creocoderul. pe forumul Yii. pe bună dreptate, a remarcat că nu există nimic pentru a reinventa roata, totul este deja gata, este nevoie doar de RTFM! Era vorba despre clasa CHtmlPurifier, care este un wrapper pentru biblioteca HTML Purifier. și efectuează toate funcțiile care sunt necesare pentru mine (deși nu am poprobyval în acțiune, poate și cu siguranță nimic). Dar odată ce am început să scriu filtrul - am decis să termin în continuare acest lucru, și pur și simplu a scrie un articol despre filtrele din Yii.
Filtrele sunt fragmente de cod care pot fi executate înainte și / sau după executarea acțiunii controlerului. Filtrele, dacă este necesar, pot împiedica executarea acțiunii solicitate.
Filtrele pot fi atât metode ale controlerului curent, cât și clase individuale - ceea ce le permite să le reutilizeze. Dacă filtrul este implementat ca metodă de clasă, acesta trebuie să aibă prefixul "filter".
Un filtru implementat ca o clasă separată trebuie să fie un mostenitor al clasei CFilter.
Pentru a activa filtrele, este necesar ca controlerul să suprascrie metoda filtrelor, care trebuie să returneze o matrice a tuturor filtrelor pentru acest controler (sau acțiunile sale individuale).
În acest exemplu, "accessControl" este un filtru implementat ca metodă de control și "application.filters.XssFilter" este un filtru implementat ca o clasă separată care este stocată în directorul / protected / filters /. 'Clean' - setați proprietatea filtrului.
Aceasta a fost o scurtă referire la filtrele din Yii, mai multe detalii pot fi citite aici.
Acum vom începe imediat să implementăm filtrul nostru. Funcția de curățare a datelor, care face tot munca - am luat din cadrul Kohana. Ei bine, acest lucru este destul de cuvinte, voi aduce codul filtru în sine - este destul de simplu, așa că nu cred că ar trebui să existe probleme.
Am testat complet acest filtru - la prima vedere - funcționează!
Vreau să adaug comentariile mele la implementarea filtrelor în Yii ...
Cred că a fost util să existe o metodă care se numește înainte de a efectua prefiltru și postFilter, cum ar fi init () - care inițializează filtrul, astfel ar trebui să fie parametrii disponibili peredavemye în filtrul de la operator (din acest motiv, este imposibil de utilizat __construct). Desigur, puteți extinde CFilter pentru aceste scopuri, dar „nativ“ poate să facă acest lucru ar fi cea mai bună opțiune.
Sper că acest material va fi util!
Vă vom rezolva problemele!