Peaksite kasutama PHP filtreerimisfunktsioone, 1. osa
Andmete desinfitseerimisest WordPressis olen varasemates postitustes rääkinud. See on teema, mis on oluline mitte ainult neile, kes töötame WordPressis teistele lahenduste loomisega, vaid ka neile, kes kirjutavad koodi, mis suhtleb PHP kaudu otse andmebaasiga.
Muidugi on WordPressi algfunktsioonid selle protsessi hõlbustamiseks, kuid selle abistamiseks on ka sisseehitatud PHP-filtreerimisfunktsioonid. Nimelt filter_var
ja filter_input
ja need on asjad, mida minu arvates on PHP arendajatele kasulik teada.
PHP filtreerimisfunktsioonid, 1. osa: muutujad
Muutujate filtreerimine toimub sobiva nimega filter_var
funktsiooni abil. Ametlik määratlus on järgmine:
Filtreerib muutuja määratud filtriga
Määratlus ise võib olla veidi ringikujuline, eriti kui alles alustate PHP-ga või filtreerimisfunktsioonide kasutamist. Selle määratluse puhul on oluline mõista, mis filter tegelikult on.
Nii et kui olete harjunud töötama näiteks tõeväärtuste, täisarvude, meiliaadresside ja muuga (ja kes mitte?), siis on see mõttekam, kas pole? See tähendab, et kui teil on vaja seda tüüpi väärtuste kohta teatud tüüpi valideerimist, võib see aidata.
Suurepärane on see, et olenemata sellest, mida te filtreerite, filter_var
naaseb false
see alati, kui filter ebaõnnestub.
Oletame, et soovite e-posti aadressi filtreerida, siis saate teha midagi sellist:
filter_var($emailAddress, FILTER_VALIDATE_EMAIL)
;
Muidugi pole see ka ilma probleemideta. Näiteks ei kinnita see mitte-ladinakeelseid domeene. Sellest hetkeks lähemalt.
Igatahes, võib-olla soovite filtreerida teist tüüpi väärtusi:
filter_var($url, FILTER_VALIDATE_URL)
filter_var('1001', FILTER_VALIDATE_INT)
Ja saate need vastavalt oma vajadustele keerulisemaks muuta. Oletagem, et peate näiteks kindlaks tegema, kas IP on avalik. Siis saate kasutada midagi keerukamat, näiteks järgmist:
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)
Asi on selles, et on oluline teada, kuidas see filter_var
töötab ja millised filtrid on saadaval. See on tõesti koht, kus selle kasulikkus tuleb mängu. Selleks soovitan tungivalt läbi lugeda PHP pakutavad valideerimisfiltrid.
Lõpuks pidage meeles ülaltoodud märkust e-posti aadressidega mitte-ladinakeelsete domeenide kohta? Teatud funktsioonidega on selliseid juhtumeid, mille puhul peate enne nende kasutamist üle vaatama, mida juhend teatud URL-ide, domeenide ja muu kohta ütleb.
filter_var
Sellistel juhtudel ei pruugi see kahjuks alati toimida. Selle asemel võivad regulaaravaldised olla sobivaks asenduseks.
Kuidas on sisendite filtreerimisega?
Kui teil on kogemusi ka selliste muutujatega nagu $_GET
ja $_POST
siis on selle jaoks veel üks filtreerimisfunktsioon.
Järgmises postituses kirjeldan, kuidas kõige paremini kasutada neid, mida paljud meist traditsiooniliselt kasutavad.