Powinieneś używać funkcji filtrowania PHP, część 1
W poprzednich wpisach pisałem o oczyszczaniu danych w WordPressie. Jest to temat, który jest ważny nie tylko dla tych z nas, którzy pracują nad budowaniem rozwiązań dla innych w WordPressie, ale także dla tych, którzy piszą kod, który będzie bezpośrednio komunikował się z bazą danych za pośrednictwem PHP.
Oczywiście istnieją natywne funkcje WordPressa, które ułatwiają ten proces, ale są też wbudowane funkcje filtrowania PHP, które w tym pomagają. Mianowicie filter_vari filter_inputi są to rzeczy, które moim zdaniem są przydatne dla programistów PHP.
Funkcje filtrowania PHP, część 1: Zmienne
Filtrowanie zmiennych odbywa się za pomocą trafnie nazwanej filter_varfunkcji. Oficjalna definicja to:
Filtruje zmienną z określonym filtrem
Sama definicja może brzmieć trochę w kółko, zwłaszcza jeśli dopiero zaczynasz pracę z PHP lub korzystasz z funkcji filtrujących. Ważną rzeczą do zrozumienia w tej definicji jest to, czym właściwie jest filtr.
Więc jeśli jesteś przyzwyczajony do pracy z, powiedzmy, wartościami boolowskimi, liczbami całkowitymi, adresami e-mail i tak dalej (a kto nie jest?), to ma to więcej sensu, prawda? Oznacza to, że jeśli musisz zapewnić jakiś rodzaj walidacji wokół tych typów wartości, może to pomóc.
Wspaniałe jest to, że niezależnie od tego, co filtrujesz, filter_varpowróci false, gdy filtr się nie powiedzie.
Załóżmy, że chcesz filtrować adres e-mail, a następnie możesz zrobić coś takiego:
filter_var($emailAddress, FILTER_VALIDATE_EMAIL);
Oczywiście nie obyło się bez kilku błędów. Na przykład nie weryfikuje domen innych niż łacińskie. Więcej o tym za chwilę.
W każdym razie może chcesz filtrować inne typy wartości:
filter_var($url, FILTER_VALIDATE_URL)filter_var('1001', FILTER_VALIDATE_INT)
I możesz je bardziej skomplikować w zależności od swoich potrzeb. Załóżmy na przykład, że musisz określić, czy adres IP jest publiczny. Następnie możesz użyć czegoś bardziej skomplikowanego, takiego jak to:
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)
Chodzi o to, że ważne jest, aby wiedzieć, jak filter_vardziała, a także jakie filtry są dostępne. Właśnie tam pojawia się użyteczność tego rozwiązania. W tym celu gorąco polecam zapoznanie się z filtrami walidacji, które oferuje PHP.
Na koniec pamiętasz powyższą notatkę o domenach innych niż łacińskie z adresami e-mail? Jest kilka takich przypadków z pewnymi funkcjami, w których musisz sprawdzić, co podręcznik ma do powiedzenia na temat określonych adresów URL, domen itd., zanim z nich skorzystasz.
W takich przypadkach niestety filter_varmoże nie zawsze działać. Zamiast tego odpowiednim zamiennikiem mogą być wyrażenia regularne.
A co z filtrowaniem danych wejściowych?
Jeśli masz doświadczenie również w pracy ze zmiennymi, takimi jak $_GETa $_POST, istnieje inna funkcja filtrująca specjalnie do tego celu.
A w następnym poście omówię, jak najlepiej wykorzystać te w miejscu, z których tak wielu z nas tradycyjnie korzysta.