Du bör använda PHP-filtreringsfunktioner, del 1
Jag har pratat om datasanering i WordPress i tidigare inlägg. Detta är ett ämne som är viktigt inte bara för de av oss som arbetar med att bygga lösningar för andra i WordPress, utan också för de som skriver kod som direkt interagerar med en databas via PHP.
Visst, det finns inbyggda WordPress-funktioner för att göra denna process enklare, men det finns också inbyggda PHP-filtreringsfunktioner som hjälper till med detta. Nämligen filter_var
och filter_input
och det här är saker som jag tror är bra för PHP-utvecklare att veta.
PHP-filtreringsfunktioner, del 1: Variabler
Filtrering av variabler görs av den passande namngivna filter_var
funktionen. Den officiella definitionen är:
Filtrerar en variabel med ett specificerat filter
Själva definitionen kan läsas lite cirkulär, särskilt om du precis har börjat med PHP eller med att använda filtreringsfunktioner. Det viktiga att förstå i denna definition är vad ett filter faktiskt är.
Så om du är van vid att arbeta med till exempel booleska värden, heltal, e-postadresser och så vidare (och vem är inte det?), då är det mer vettigt, eller hur? Det vill säga, om du behöver tillhandahålla någon typ av validering kring dessa typer av värden, så kan detta hjälpa.
Vad som är bra är att oavsett vad det är du filtrerar så filter_var
kommer det att återvända false
när filtret misslyckas.
Låt oss säga att du vill filtrera en e-postadress, då kan du göra något så här:
filter_var($emailAddress, FILTER_VALIDATE_EMAIL)
;
Naturligtvis är det inte utan några gotchas. Till exempel kommer den inte att validera icke-latinska domäner. Mer om detta för en stund.
Hur som helst, kanske du vill filtrera andra typer av värden:
filter_var($url, FILTER_VALIDATE_URL)
filter_var('1001', FILTER_VALIDATE_INT)
Och du kan göra dem mer komplicerade beroende på dina behov. Säg till exempel att du måste avgöra om en IP är offentlig. Då kan du använda något mer utarbetat så här:
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)
Grejen är att det är viktigt att veta hur filter_var
det fungerar och vilka filter som finns tillgängliga. Det är verkligen där nyttan av detta spelar in. För detta ändamål rekommenderar jag starkt att du läser igenom valideringsfiltren som PHP erbjuder.
Slutligen, kom ihåg anteckningen ovan om icke-latinska domäner med e-postadresser? Det finns några fall som detta med vissa funktioner som du måste granska vad manualen har att säga om vissa webbadresser, domäner och så vidare innan du använder dem.
I de fallen kanske det tyvärr filter_var
inte alltid fungerar. Istället kan reguljära uttryck vara en lämplig ersättning.
Hur är det med filtrering av ingångar?
Om du har erfarenhet av att även arbeta med variabler som $_GET
och $_POST
så finns det en annan filtreringsfunktion specifikt för det.
Och i nästa inlägg kommer jag att gå igenom hur man bäst använder de på plats som så många av oss traditionellt använder.