Debería estar usando funciones de filtrado de PHP, parte 1
He hablado sobre el saneamiento de datos en WordPress en publicaciones anteriores. Este es un tema que es importante no solo para aquellos de nosotros que trabajamos para crear soluciones para otros en WordPress, sino también para aquellos que escriben código que interactuará directamente con una base de datos a través de PHP.
Claro, hay funciones nativas de WordPress para facilitar este proceso, pero también hay funciones de filtrado de PHP integradas para ayudar con esto. Es decir filter_var, y filter_inputestas son cosas que creo que son útiles para que los desarrolladores de PHP sepan.
Funciones de filtrado de PHP, Parte 1: Variables
El filtrado de variables se realiza mediante la filter_varfunción acertadamente nombrada. La definición oficial es:
Filtra una variable con un filtro especificado
La definición en sí puede leerse un poco circular, especialmente si recién está comenzando con PHP o con el uso de funciones de filtrado. Lo importante que hay que entender en esta definición es qué es realmente un filtro.
Entonces, si está acostumbrado a trabajar con, digamos, valores booleanos, números enteros, direcciones de correo electrónico, etc. (¿y quién no lo está?), entonces tiene más sentido, ¿no? Es decir, si necesita proporcionar algún tipo de validación en torno a esos tipos de valores, esto puede ayudar.
Lo bueno es que, independientemente de lo que esté filtrando, filter_varregresará falsecada vez que el filtro falle.
Digamos que desea filtrar una dirección de correo electrónico, luego puede hacer algo como esto:
filter_var($emailAddress, FILTER_VALIDATE_EMAIL);
Por supuesto, no es sin algunas trampas. Por ejemplo, no validará dominios no latinos. Más sobre esto momentáneamente.
De todos modos, tal vez quieras filtrar otros tipos de valores:
filter_var($url, FILTER_VALIDATE_URL)filter_var('1001', FILTER_VALIDATE_INT)
Y puedes hacerlos más complicados dependiendo de tus necesidades. Digamos, por ejemplo, que necesita determinar si una IP es pública. Entonces puedes usar algo más elaborado como esto:
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)
La cuestión es que es importante saber cómo filter_varfunciona y qué filtros están disponibles. Ahí es realmente donde entra en juego la utilidad de esto. Con ese fin, recomiendo leer los filtros de validación que ofrece PHP.
Finalmente, ¿recuerda la nota anterior sobre dominios no latinos con direcciones de correo electrónico? Hay algunos casos como este con ciertas características que deberá revisar lo que dice el manual con respecto a ciertas URL, dominios, etc. antes de usarlos.
En esos casos, por desgracia, filter_varpuede que no siempre funcione. En su lugar, las expresiones regulares pueden ser un reemplazo adecuado.
¿Qué pasa con el filtrado de entradas?
Si tiene experiencia trabajando también con variables como $_GETy $_POSTentonces hay otra función de filtrado específicamente para eso.
Y en la próxima publicación, explicaré cómo usar mejor los que muchos de nosotros usamos tradicionalmente.