✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Debería estar usando funciones de filtrado de PHP, parte 2

31

En la publicación anterior, hablé sobre las razones por las que usar las funciones de filtrado de PHP es más útil que no.

En resumen, hacerlo ayuda a proporcionar un nivel de validación integrado en el lenguaje para que no tengamos que volver a escribir algo. Naturalmente, hay advertencias.

Por ejemplo, si tiene que validar un valor que es de caracteres no latinos, entonces tendrá que hacerlo solo e implementar la validación quizás con una expresión regular.

Pero si está usando direcciones de correo electrónico, URL, números, direcciones IP y muchas cosas más, entonces está en una buena posición para usar algo que ya existe.

De todos modos, todo lo anterior todavía se trata de filtrar variables. Sin embargo, ¿qué pasa con las entradas? Es decir, los que vienen de $_POSTo $_GET. Es posible usar una estrategia similar con una función diferente y un conjunto de filtros diferente.

Pero si comprende los conceptos básicos presentados en la última publicación, esta publicación no será muy diferente.

Funciones de filtrado de PHP, Parte 2: Entradas

El filtrado de entradas lo realiza la filter_inputfunción. La definición de esta función específica es:

Obtiene una variable externa específica por nombre y, opcionalmente, la filtra

El manual de PHP

Y, como se mencionó la última vez, esto suena un poco raro hasta que entiendes qué son los filtros. Afortunadamente, cubrimos esto en la publicación anterior. Y aunque esta publicación se centrará específicamente en POST(y muy brevemente GET).

Aunque hay otros filtros. Y estos incluyen:

  • INPUT_COOKIE
  • INPUT_SERVER
  • INPUT_ENV

De todos modos, dado que las dos operaciones más comunes que tiendo a ver en WordPress incluyen POSTy GET, entonces parece importante incluir estas dos aquí.

Debería estar usando funciones de filtrado de PHP, parte 2

Usar estas funciones es trivialmente fácil. Suponga que tiene un valor que proviene de algo que el usuario proporcionó en un formulario y lo envía al servidor mediante una POSTsolicitud con una clave como firstname.

El código para verificarlo puede verse así:

  • filter_input(INPUT_POST, 'firstname');

Lo cual es bastante fácil de entender porque simplemente toma la clave, la filtra y luego devuelve un valor. Y dado que devuelve un valor, podemos configurar una cláusula de protección antes de seguir adelante con más trabajo:

1if (false === filter_input(INPUT_POST, 'firstname')) {
2  return;
3}

Si todo sale bien, podemos seguir adelante haciendo lo que sea necesario con la información del usuario. Quizás necesitemos asociarlo con la publicación actual por alguna razón:

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...

Además, puede proteger aún más la información mediante el uso de los diversos filtros que existen. Estos se pasan como un tercer parámetro a la filter_inputfunción.

¿Y qué tal GET?

Lo bueno de esta función es que, en términos generales, se aplican las mismas reglas que con POSTexcepto que en lugar de usar INPUT_POST, usarás INPUT_GET.

Y luego puede trabajar con su código como mejor se adapte a las necesidades de su proyecto.

Seguridad, Nonces, etc.

Recuerde, esto no es algo para ser usado en lugar de seguridad. Esto es únicamente con el propósito de proteger los datos antes de hacer algo con ellos.

No reemplace la verificación de valores nonce solo porque está verificando los datos de manera diferente.

Variables y Entradas

Recuerde, aunque estas funciones son variables muy similares y las entradas son diferentes. En otras palabras, no intente usar filter_varcuando esté trabajando con entradas provenientes del usuario o del navegador. Úselo siempre que esté trabajando con variables. Y, de manera similar, use ht e

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More