Sinun pitäisi käyttää PHP-suodatusfunktioita, osa 2
Edellisessä viestissä puhuin syistä PHP-suodatustoimintojen käyttö on hyödyllisempää kuin ei.
Lyhyesti sanottuna tämä auttaa tarjoamaan kieleen sisäänrakennetun vahvistustason, jotta meidän ei tarvitse kirjoittaa jotain uudelleen. Luonnollisesti on varoituksia.
Jos esimerkiksi sinun on vahvistettava arvo, joka koostuu muista kuin latinalaisista merkeistä, sinun on tehtävä se yksin ja suoritettava vahvistus ehkä säännöllisellä lausekkeella.
Mutta jos käytät sähköpostiosoitteita, URL-osoitteita, numeroita, IP-osoitteita ja monia muita asioita, sinulla on hyvät mahdollisuudet käyttää jotain jo olemassa olevaa.
Joka tapauksessa kaikki yllä oleva koskee edelleen muuttujien suodattamista. Entä tulot kuitenkin? Eli ne, jotka ovat peräisin $_POST
tai $_GET
. On mahdollista käyttää samanlaista strategiaa eri toiminnolla ja eri suodatinsarjalla.
Mutta jos ymmärrät viimeisessä viestissä esitetyt perusteet, tämä viesti ei ole kovin erilainen.
PHP-suodatusfunktiot, osa 2: Tulot
Tulojen suodatus tapahtuu filter_input
toiminnolla. Tämän funktion määritelmä on:
Hakee tietyn ulkoisen muuttujan nimen perusteella ja valinnaisesti suodattaa sen
Ja kuten viime kerralla mainittiin, tämä kuulostaa hieman oudolta, kunnes ymmärrät, mitä suodattimet ovat. Onneksi käsiteltiin tätä edellisessä postauksessa. Ja vaikka tämä viesti keskittyy erityisesti POST
(ja hyvin lyhyesti GET
).
On kuitenkin muitakin suodattimia. Ja näihin kuuluvat:
INPUT_COOKIE
INPUT_SERVER
INPUT_ENV
Joka tapauksessa, koska kaksi yleisintä toimintoa, jotka minulla on tapana nähdä WordPressissä, ovat POST
ja GET
, näyttää tärkeältä sisällyttää nämä kaksi tähän.
Näiden toimintojen käyttäminen on triviaalisen helppoa. Oletetaan, että sinulla on arvo, joka tulee jostakin, jonka käyttäjä on antanut lomakkeessa, ja hän lähettää sen palvelimelle käyttämällä POST
pyyntöä avaimella, kuten firstname
.
Sen vahvistava koodi voi näyttää tältä:
filter_input(INPUT_POST, 'firstname');
Mikä on tarpeeksi helppo ymmärtää, koska se yksinkertaisesti ottaa avaimen, suodattaa sen ja palauttaa sitten arvon. Ja koska se palauttaa arvon, voimme asettaa suojalausekkeen ennen kuin jatkamme työskentelyä:
1if (false === filter_input(INPUT_POST, 'firstname')) {
2 return;
3}
Jos kaikki on kunnossa, voimme siirtyä eteenpäin ja tehdä mitä tahansa käyttäjätiedoilla. Ehkä meidän on yhdistettävä se nykyiseen viestiin jostain syystä:
1if (false === filter_input(INPUT_POST, 'firstname')) {
2 return;
3}
4
5$firstname = filter_input(INPUT_POST, 'firstname');
6update_post_meta(get_the_ID(), 'acme-firstname', $firstname);
7
8// Other code you may use...
Lisäksi voit suojata tietoja entistä enemmän käyttämällä erilaisia olemassa olevia suodattimia . Nämä välitetään kolmantena parametrina filter_input
funktiolle.
Ja Entä GET
?
Hienoa tässä funktiossa on, että yleisesti ottaen samat säännöt pätevät kuin ne pätevät, POST
paitsi että INPUT_POST
käytät INPUT_GET
.
Ja sitten voit työstää koodiasi projektisi tarpeisiin parhaiten sopivalla tavalla.
Turvallisuus, nonces jne.
Muista, että tätä ei saa käyttää turvallisuuden sijasta. Tämä on vain tietojen suojaamista varten ennen kuin teet mitään niillä.
Älä vaihda nonce-arvojen vahvistusta vain siksi, että vahvistat tiedot eri tavalla.
Muuttujat ja syötteet
Muista, vaikka nämä funktiot ovat hyvin samankaltaisia muuttujia ja syötteet ovat erilaisia. Toisin sanoen, älä yritä käyttää, filter_var
kun työskentelet käyttäjältä tai selaimelta tulevan syötteen kanssa. Käytä sitä aina, kun työskentelet muuttujien kanssa. Ja vastaavasti käytä ht e