Comprobar el tipo de datos recibidos

 Este es uno de esos pasos que ya te conté que tienes que dar para conseguir el correcto y seguro funcionamiento de tu aplicación. No es necesario tener un nivel de formación en informática a la altura de poder generar errores del tipo buffer overflow, porque si tu aplicación espera un valor numérico y un usuario maligno introduce texto, lo mejor que puede pasar es que tu programa no funcione correctamente. Se trata, pues, de una gran brecha potencial en la seguridad de tu aplicación. Los tipo de datos, a grandes rasgos se pueden dividir en tres: Cadenas de texto, números y booleanos.
 Las cadenas de texto, en casi todos los lenguajes informáticos, se nombran como strings y, muchos de ellos, valoran como una cadena de texto vacía los campos que el usuario dejó sin completar. Un modo de chequearlas en PHP es con el comando is_string(), que puedes combinar con is_empty() si te interesa filtrar los valores vacíos.
 Para los números, el método is_numeric() es el primero que se le viene a uno a la cabeza, que nos devolverá el TRUE al valorar integers, floats, el número cero, e incluso con números que técnicamente son un string. Podemos ser más precisos y usar métodos como is_integer() o is_long(), o incluso comprobar que nos devuelve el método gettype() y actuar en consecuencia. Valora la posibilidad de hacer casting (convertir al formato que necesitas), porque no crea una buena impresión mostrar un mensaje de error cuando, por ejemplo, esperas un entero del tipo 45 y el usuario ha introducido el valor 45,00.
 Finalmente los booleanos. En PHP es muy importante usar is_bool(), porque el string “false” se evalua como no vacio, y en un contexto en el que lo usemos como booleano su valor será true. ¿Imaginas las posibilidades de obtener true en ciertos contextos, simplemente añadiéndole unas comillas a false para que nuestro equipo valore el dato “false”?

Eso no es todo, amigos, hay que tener una visión muy clara en los lenguajes de programación del modo en el que estos interpretan variables que contienen valores vacíos y aquellas que no contienen valores (Null). Por defecto, ninguna de ellas aportan información a gestionar por nuestra aplicación, por tanto, y como ya te expliqué en la entrada anterior, es mejor no contemplarlas ni gestionarlas.