No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

13 Días
17 Hrs
58 Min
15 Seg

Validando datos

19/24
Recursos

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Validaciones de tipo:

// Validar si es un número
$isNumeric = is_numeric('3d'); // False
$isNumeric1 = is_numeric('3'); // True
$isNumeric2 = is_numeric(3); // True

// Validar si es un string
$isString = is_string('3d'); // True
$isString1 = is_string('3'); // True
$isString2 = is_string(3); // false

// validar si es un array
$isArray = is_array([]); // true
$isArray2 = is_array(array()); // true
$isArray3 = is_array('No soy un array xD soy un string'); // false

Ejemplos de validaciones

$is_float = filter_var("0.9", FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);
$is_int = filter_var("45", FILTER_VALIDATE_INT);
$is_ip = filter_var("127.0.0.1", FILTER_VALIDATE_IP);
$is_url = filter_var("https://platzi.com", FILTER_VALIDATE_URL);
$is_email = filter_var("[email protected]", FILTER_VALIDATE_EMAIL);

Wow, de verdad que PHP me sorprende todo lo que permite hacer y lo que ya tiene pre-definido.
Se podría decir que la diferencia con la sanitización seria que estas validan que el valor en concreto sea del tipo elegido mientras que la sanitización las limpia solamente?
Comparto mi apunte con algunas validaciones como las que vimos en clase.
.
Código:

<?php

// Creando variables manualmente para hacer su respectiva validación
$esEntero = "12";
$noEsEntero = 12.7;

$esFloat = "81.87";
$noEsFloat = "joel78.87";

$esIP = "192.168.0.11";
$noEsIP = "192.168";

$esEmail = "[email protected]";
$noEsEmail = "joeldome@densi";

$esBooleano = "true";
$noEsBooleano = "soytrue";

$esURL = "https://joel.com";
$noEsURL = "joel.com";

// Validando datos en PHP gracias a la función filter_var
// Si es válido, devuelve el valor validado
// Si no es válido, devuelve un 'false'

// Validando si es un número entero
echo("<p>Validando si es un número entero</p>");
echo("<pre>");

var_dump( filter_var($esEntero, FILTER_VALIDATE_INT) ); // int(12)
var_dump( filter_var($noEsEntero, FILTER_VALIDATE_INT) ); // bool(false)

echo("</pre>");


// Validando si es un número de tipo float
echo("<p>Validando si es un número de tipo float</p>");
echo("<pre>");

var_dump( filter_var($esFloat, FILTER_VALIDATE_FLOAT) ); // float(81.87)
var_dump( filter_var($noEsFloat, FILTER_VALIDATE_FLOAT) ); // bool(false)

echo("</pre>");


// Validando si es una IP
echo("<p>Validando si es una IP</p>");
echo("<pre>");

var_dump( filter_var($esIP, FILTER_VALIDATE_IP) ); // string(12) "192.168.0.11"
var_dump( filter_var($noEsIP, FILTER_VALIDATE_IP) ); // bool(false)

echo("</pre>");


// Validando si es un correo
echo("<p>Validando si es un correo electronico</p>");
echo("<pre>");

var_dump( filter_var($esEmail, FILTER_VALIDATE_EMAIL) ); // string(19) "[email protected]"
var_dump( filter_var($noEsEmail, FILTER_VALIDATE_EMAIL) ); // bool(false)

echo("</pre>");


// Validando si es un booleano
echo("<p>Validando si es un booleano</p>");
echo("<pre>");

var_dump( filter_var($esBooleano, FILTER_VALIDATE_BOOLEAN) ); //  // bool(true)
var_dump( filter_var($noEsBooleano, FILTER_VALIDATE_BOOLEAN) ); // bool(false)

echo("</pre>");


// Validando si es una URL válida
echo("<p>Validando si es una URL válida</p>");
echo("<pre>");

var_dump( filter_var($esURL, FILTER_VALIDATE_URL) ); //  // string(16) "https://joel.com"
var_dump( filter_var($noEsURL, FILTER_VALIDATE_URL) ); // bool(false)

echo("</pre>");

.

Resultado:

Otra Función muy útil, pero que va de la mano con expresiones regulares es: '**preg\_match'**.Permite buscar un patrón específico dentro de una cadena de texto. ```js if (!preg_match('/[0-9]/', $cadena)) { echo "La cadena NO contiene ningún número."; } else { echo "La cadena contiene al menos un número."; } ```En este caso, `preg_match('/[0-9]/', $cadena)` busca cualquier dígito del 0 al 9 en la variable `$cadena`. Si no se encuentra ningún dígito, `preg_match()` devuelve `0` (falso), lo que significa que no hubo coincidencia con el patrón. Al usar `!` antes de `preg_match()`, estamos verificando si NO hay coincidencias con el patrón `[0-9]`, es decir, si la cadena NO contiene ningún número. Si no contiene números, se ejecutará el primer `echo`, indicando que no se encontraron dígitos en la cadena. Es ideal si queremos hacer validacion de contraseñas correctas.

FILTER_VAR EN PH

Aquí tienes una lista de algunas propiedades o argumentos utilizados con la función filter_var en PHP, junto con una breve descripción y ejemplos prácticos:

  • FILTER_VALIDATE_EMAIL: Valida si una cadena es una dirección de correo electrónico válida.

    $email = '[email protected]';
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        echo "La dirección de correo electrónico es válida.";
    } else {
        echo "La dirección de correo electrónico no es válida.";
    }
    // Output esperado: La dirección de correo electrónico es válida.
    
  • FILTER_VALIDATE_URL: Valida si una cadena es una URL válida.

    $url = '<https://example.com>';
    if (filter_var($url, FILTER_VALIDATE_URL)) {
        echo "La URL es válida.";
    } else {
        echo "La URL no es válida.";
    }
    // Output esperado: La URL es válida.
    
  • FILTER_VALIDATE_IP: Valida si una cadena es una dirección IP válida.

    $ip = '192.168.0.1';
    if (filter_var($ip, FILTER_VALIDATE_IP)) {
        echo "La dirección IP es válida.";
    } else {
        echo "La dirección IP no es válida.";
    }
    // Output esperado: La dirección IP es válida.
    
  • FILTER_VALIDATE_INT: Valida si una cadena es un número entero válido.

    $number = '42';
    if (filter_var($number, FILTER_VALIDATE_INT)) {
        echo "El número es válido.";
    } else {
        echo "El número no es válido.";
    }
    // Output esperado: El número es válido.
    
  • FILTER_VALIDATE_FLOAT: Valida si una cadena es un número de punto flotante válido.

    $float = '3.14';
    if (filter_var($float, FILTER_VALIDATE_FLOAT)) {
        echo "El número de punto flotante es válido.";
    } else {
        echo "El número de punto flotante no es válido.";
    }
    // Output esperado: El número de punto flotante es válido.
    
  • FILTER_VALIDATE_BOOLEAN: Valida si una cadena es un valor booleano válido (true o false).

    $value = 'true';
    if (filter_var($value, FILTER_VALIDATE_BOOLEAN)) {
        echo "El valor es válido.";
    } else {
        echo "El valor no es válido.";
    }
    // Output esperado: El valor es válido.
    
  • FILTER_VALIDATE_REGEXP: Valida si una cadena coincide con un patrón de expresión regular.

    $pattern = '/^[a-zA-Z0-9]+$/';
    $username = 'john123';
    if (filter_var($username, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => $pattern)))) {
        echo "El nombre de usuario es válido.";
    } else {
        echo "El nombre de usuario no es válido.";
    }
    // Output esperado: El nombre de usuario es válido.
    
    

Recuerda que estas son solo algunas de las propiedades más comunes utilizadas con filter_var. Puedes consultar la documentación oficial de PHP para obtener más información y ver todas las opciones disponibles.

Validando datos

La validación de datos es un proceso fundamental en la programación y el desarrollo de aplicaciones por varias razones importantes:

  1. Integridad de Datos: La validación de datos asegura que los datos sean precisos, coherentes y confiables. Esto es crucial para mantener la integridad de la información en una aplicación o sistema.
  2. Seguridad: La validación de datos ayuda a prevenir vulnerabilidades de seguridad como la inyección de SQL y los ataques de scripting entre sitios (XSS). Al validar los datos de entrada, se evita que los atacantes inyecten código malicioso en la aplicación.
  3. Cumplimiento de Normativas: En muchas industrias, existen regulaciones y normativas que requieren la validación de datos, especialmente cuando se trata de datos sensibles o privados, como información financiera o médica. Cumplir con estas normativas es esencial para evitar sanciones legales.
  4. Mejora de la Experiencia del Usuario: Validar datos también puede mejorar la experiencia del usuario al garantizar que los datos ingresados sean válidos y útiles. Por ejemplo, al validar formularios web, se pueden proporcionar mensajes de error claros y útiles en lugar de que los usuarios se enfrenten a errores inesperados.
  5. Evitar Errores y Comportamientos Inesperados: La validación de datos ayuda a evitar errores y comportamientos inesperados en una aplicación. Esto puede incluir problemas como divisiones por cero, valores nulos inesperados o resultados incorrectos debido a datos no válidos.
  6. Optimización de Rendimiento: Al garantizar que los datos sean válidos y útiles, se puede optimizar el rendimiento de la aplicación. Esto significa que la aplicación puede funcionar de manera más eficiente y rápida al evitar cálculos innecesarios o acciones basadas en datos incorrectos.
  7. Prevención de Ataques de Inyección: La validación adecuada de datos es esencial para prevenir ataques de inyección, como la inyección de SQL y la inyección de comandos en sistemas. Al validar y filtrar datos de entrada, se impide que los atacantes ejecuten código malicioso en la aplicación.

En resumen, la validación de datos es una práctica crítica en el desarrollo de software para garantizar la precisión, la seguridad y el rendimiento de una aplicación, al tiempo que se mejora la experiencia del usuario y se cumple con las normativas aplicables.

Código desarrollado en la clase

Servidor PHP

<?php

// // Truco para debugear y ver lo que llega por POST
// echo "<pre>";
// var_dump($_POST); // Recupera la información que se envía por POST
// var_dump($_FILES); // Recupera la información que se envía por FILES
// echo "</pre>";

// Formas de validar datos usando filter_var()
$dato1 = "Hola";
$dato2 = "Hola123";
$datoIP = "127.0.0.1";
$datoURL = "https://www.google.com";
$datoEmail = "Holaaaaaaaaaaaaaaa";

$es_float = filter_var($dato1, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND); // Filtro para validar floats. El flag FILTER_FLAG_ALLOW_THOUSAND permite que el float tenga separador de miles.
if ($es_float) {
    echo "Es un float <br>";
} else {
    echo "No es un float <br>";
}

$es_int = filter_var($dato2, FILTER_VALIDATE_INT); // Filtro para validar ints.
if ($es_int) {
    echo "Es un int <br>";
} else {
    echo "No es un int <br>";
}

$es_ip = filter_var($datoIP, FILTER_VALIDATE_IP); // Filtro para validar IPs.
if ($es_ip) {
    echo "Es una IP <br>";
} else {
    echo "No es una IP <br>";
}

$es_url = filter_var($datoURL, FILTER_VALIDATE_URL); // Filtro para validar URLs.
if ($es_url) {
    echo "Es una URL <br>";
} else {
    echo "No es una URL <br>";
}

$es_email = filter_var($datoEmail, FILTER_VALIDATE_EMAIL); // Filtro para validar emails.
if ($es_email) {
    echo "Es un email <br>";
} else {
    echo "No es un email <br>";
}
?>
<?php

$is_float = filter_var("0.9", FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);

$is_int = filter_var("45", FILTER_VALIDATE_INT);

$is_ip = filter_var("127.0.0.1", FILTER_VALIDATE_IP);

$is_url = filter_var("https://platzi.com", FILTER_VALIDATE_URL);

$is_email = filter_var("[email protected]", FILTER_VALIDATE_EMAIL);

echo "<pre>";
var_dump($is_float);
var_dump($is_int);
var_dump($is_ip);
var_dump($is_url);
var_dump($is_email);
echo "</pre>";```