No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Adquiere por un a帽o todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

1D
18H
16M
27S
Curso de PHP: Integraci贸n con HTML

Curso de PHP: Integraci贸n con HTML

Carlos Eduardo G贸mez Garc铆a

Carlos Eduardo G贸mez Garc铆a

Validando datos

19/24
Recursos

Aportes 6

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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:

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>";```