CursosEmpresasBlogLiveConfPrecios

Sanitizando datos de mi formulario

Clase 18 de 24 • Curso de PHP: Integración con HTML

Clase anteriorSiguiente clase

Contenido del curso

Introducción
  • 1
    ¿Cómo se renderiza una página web en mi computadora?

    ¿Cómo se renderiza una página web en mi computadora?

    08:20
  • 2
    Levantando un servidor local

    Levantando un servidor local

    09:59
¿Cómo combinar HTML con PHP?
  • 3
    PHP como preprocesador de HTML

    PHP como preprocesador de HTML

    08:43
  • 4
    Imprime texto y etiquetas HTML

    Imprime texto y etiquetas HTML

    07:00
  • 5
    Condicionales

    Condicionales

    11:43
  • 6
    Ciclos

    Ciclos

    09:41
  • 7
    ¿Cómo pasar variables de PHP a JavaScript?

    ¿Cómo pasar variables de PHP a JavaScript?

    16:26
  • 8
    Evita el código espagueti

    Evita el código espagueti

    08:58
  • 9
    Refactorizando código espagueti

    Refactorizando código espagueti

    18:19
Manejo de formularios
  • 10
    Cómo obtener una solicitud al servidor con PHP

    Cómo obtener una solicitud al servidor con PHP

    08:01
  • 11
    Envío de un formulario a través de GET

    Envío de un formulario a través de GET

    12:13
  • 12
    Envío de un formulario a través de POST

    Envío de un formulario a través de POST

    07:38
  • 13
    Envío de imágenes

    Envío de imágenes

    09:02
  • 14
    Guardando imágenes en el servidor

    Guardando imágenes en el servidor

    07:56
  • 15
    Tipos de inputs

    Tipos de inputs

    15:29
  • 16
    Otros tipos de inputs

    Otros tipos de inputs

    07:14
  • 17
    Valida si un formulario ha sido enviado

    Valida si un formulario ha sido enviado

    11:21
  • 18
    Sanitizando datos de mi formulario

    Sanitizando datos de mi formulario

    15:05
  • 19
    Validando datos

    Validando datos

    07:59
Proyecto: formulario de contacto
  • 20
    Creando el maquetado

    Creando el maquetado

    13:03
  • 21
    Haciendo la lógica de recepción del formulario

    Haciendo la lógica de recepción del formulario

    12:02
  • 22
    Integrando PHPMailer

    Integrando PHPMailer

    20:36
  • 23
    Implementando el servidor de correos de Gmail

    Implementando el servidor de correos de Gmail

    07:40
Conclusión
  • 24
    Es tu turno de poner todo en práctica

    Es tu turno de poner todo en práctica

    01:50
    Walter Omar Barrios Vazquez

    Walter Omar Barrios Vazquez

    student•
    hace 4 años

    Varias formas de sanitizar datos de formulario

    <?php $htmlentities = htmlentities($name); $addslashes = addslashes($username); $onlywords = preg_replace("/\d/", "", $username); $onlynumbers = preg_replace("/\D/", "", $username); $email = filter_var($email, FILTER_SANITIZE_EMAIL); $sanitize_int = filter_var($age, FILTER_SANITIZE_NUMBER_INT);
    Henry

    Henry

    student•
    hace 4 años

    Vayaaaa!!! Se me hacía raro que estaban estos temas pendientes, la verdad que son temas muy importantes, además el profe es un crack y sabe explicar.

    Edwin Ricaurte

    Edwin Ricaurte

    student•
    hace 3 años

    Hay varias maneras de sanitizar datos de formulario en PHP para evitar ataques de inyección de código y proteger la seguridad de la aplicación. A continuación, se presentan algunas opciones:

    Utilizar la función htmlspecialchars(): esta función convierte caracteres especiales en entidades HTML, evitando así que se interpreten como código. Por ejemplo: $name = htmlspecialchars($_POST['name']);

    Utilizar la función strip_tags(): esta función elimina todas las etiquetas HTML y PHP de una cadena, lo que impide que se ejecute código malicioso. Por ejemplo: $comment = strip_tags($_POST['comment']);

    Utilizar la función intval(): esta función convierte una variable en un entero y elimina cualquier valor no numérico. Por ejemplo: **$id = intval($_POST['id']); **

    Utilizar la función filter_var(): esta función permite filtrar una variable a través de diferentes tipos de filtros, como filtros de correo electrónico, URL o entero. Por ejemplo: $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);

    Utilizar expresiones regulares: las expresiones regulares (regex) son una herramienta muy potente para validar y sanitizar datos de formulario. Por ejemplo, para permitir solo números y letras en un campo de texto, se puede utilizar la siguiente expresión regular: /^[a-zA-Z0-9]+$/

    Es importante tener en cuenta que la sanitización de datos no es suficiente en sí misma para proteger la aplicación de ataques de inyección de código. También es necesario validar los datos de formulario para asegurarse de que cumplen con los requisitos de la aplicación y utilizar consultas preparadas y parámetros con marcadores para proteger las consultas a la base de datos.

    Leonardo Jiménez Ubaque

    Leonardo Jiménez Ubaque

    student•
    hace 2 años

    Sanitizando datos de un formulario

    La sanitización de datos en PHP es el proceso de limpiar y validar los datos de entrada para asegurarse de que sean seguros, confiables y adecuados para su procesamiento y almacenamiento. El objetivo principal de la sanitización es prevenir ataques y vulnerabilidades relacionados con la seguridad, como inyecciones de SQL, ataques de scripts entre sitios (XSS), entre otros.

    La sanitización de datos implica aplicar diversas técnicas y filtros a los datos de entrada para asegurarse de que cumplan con ciertas reglas y estándares antes de ser utilizados en tu aplicación. Esto ayuda a evitar que los datos maliciosos o no válidos afecten la funcionalidad y seguridad de tu aplicación.

    Algunas de las técnicas y métodos comunes de sanitización de datos en PHP son:

    1. Filtros de Validación y Sanitización: PHP proporciona una serie de filtros integrados para validar y sanitizar diferentes tipos de datos, como URL, correos electrónicos, números, etc. Estos filtros se pueden usar con las funciones filter_var() y filter_input().
    2. Funciones de Escape: Para prevenir inyecciones de SQL y ataques de scripts entre sitios (XSS), se deben escapar y codificar adecuadamente los datos antes de mostrarlos en el navegador o utilizarlos en consultas de bases de datos.
    3. Preparación de Consultas SQL: Al interactuar con bases de datos, es fundamental utilizar consultas preparadas y vinculación de parámetros para evitar la inyección de SQL.
    4. Uso de Frameworks y Bibliotecas Seguras: Utilizar frameworks y bibliotecas de PHP seguros puede ayudarte a manejar la sanitización de datos de manera efectiva, ya que a menudo incluyen funciones y métodos integrados para manejar problemas de seguridad comunes.
    5. Validación en el Lado del Cliente: Además de la sanitización en el lado del servidor, también es importante implementar validación en el lado del cliente utilizando JavaScript para brindar una experiencia de usuario más fluida y prevenir el envío de datos inválidos.

    Recuerda que la sanitización de datos es una parte esencial del desarrollo seguro de aplicaciones web. Dependiendo de las características de tu aplicación y los datos que manejas, es posible que necesites implementar diversas técnicas de sanitización para garantizar que tus datos sean seguros y confiables.

    Escapar caracteres

    Escapar caracteres significa anteponer un carácter especial llamado "carácter de escape" a otro carácter o conjunto de caracteres dentro de una cadena de texto o en algún contexto específico en un lenguaje de programación. Este carácter de escape le indica al lenguaje que el carácter que sigue inmediatamente después debe ser tratado de manera literal y no en su función normal o especial.

    La necesidad de escapar caracteres surge cuando quieres representar ciertos caracteres especiales o evitar que ciertos caracteres sean interpretados de manera incorrecta en un contexto específico. Algunos de los casos más comunes de escapar caracteres incluyen:

    1. Cadenas con comillas: En muchos lenguajes de programación, como PHP, JavaScript y otros, debes escapar comillas simples (') o comillas dobles (") dentro de una cadena si la cadena misma está delimitada por comillas del mismo tipo. Por ejemplo, en PHP:

      $cadena = "Esto es un ejemplo de \\"cadena escapada\\".";

      Esto asegura que las comillas dobles dentro de la cadena se traten como caracteres literales y no como el delimitador de la cadena.

    2. Caracteres de control: Los caracteres de control, como saltos de línea (\n), retornos de carro (\r) o tabulaciones (\t), se pueden escapar para representarlos de manera explícita en una cadena en lugar de que sean interpretados como caracteres de formato.

    3. Caracteres de escape: Si deseas representar el propio carácter de escape en una cadena, debes escaparlo. En muchos lenguajes, se utiliza \\ para representar una barra invertida literal.

    4. Interpolación de variables: En algunos lenguajes, como PHP, para interpolar variables en una cadena delimitada por comillas dobles, debes escapar el signo de dólar ($) para evitar que se interprete como una variable. Por ejemplo:

      $nombre = "Juan"; $saludo = "Hola, \\$nombre";

      Esto produce la cadena "Hola, $nombre" en lugar de "Hola, Juan".

    5. Evitar inyecciones de código: En contextos como la construcción de consultas SQL o la generación de HTML dinámico, es fundamental escapar caracteres especiales para prevenir ataques como la inyección de SQL o el cross-site scripting (XSS).

    La escapada de caracteres es una práctica importante para garantizar la seguridad y la integridad de los datos, así como para controlar la interpretación de ciertos caracteres en diferentes contextos de programación.

    Algunas formas de sanitizar datos

    Htmlentities

    htmlentities() es una función en PHP que se utiliza para convertir caracteres especiales y etiquetas HTML en entidades HTML. Su función principal es evitar problemas de seguridad y mejorar la seguridad al mostrar contenido en una página web. También puede utilizarse para asegurarse de que el contenido se muestre correctamente en navegadores cuando contiene caracteres que normalmente serían interpretados como etiquetas o entidades HTML.

    Aquí hay un ejemplo de cómo usar htmlentities():

    $texto = "<p>Este es un <strong>texto</strong> con caracteres especiales como & y <.</p>"; $texto_sanitizado = htmlentities($texto); echo $texto_sanitizado;

    En este ejemplo, la función htmlentities() se utiliza para convertir los caracteres especiales y las etiquetas HTML en entidades HTML. El resultado es que el contenido se mostrará como texto plano y no se interpretará como etiquetas HTML en el navegador. Esto es útil para evitar ataques de inyección de código y para garantizar que el contenido se muestre correctamente en la página web, especialmente cuando se trata de contenido generado por el usuario.

    En resumen, htmlentities() se utiliza para convertir caracteres especiales y etiquetas HTML en entidades HTML, lo que mejora la seguridad y evita problemas de interpretación de contenido en páginas web.

    Addslashes

    addslashes() es una función en PHP que se utiliza para escapar caracteres especiales en una cadena de texto. Su propósito principal es preparar una cadena para su inserción segura en una consulta SQL o en algún otro contexto en el que se necesite evitar problemas de seguridad, como la inyección de SQL.

    La función addslashes() agrega una barra invertida (\) delante de ciertos caracteres que pueden tener significados especiales en una consulta SQL. Estos caracteres incluyen comillas simples ('), comillas dobles ("), barras invertidas (\), entre otros.

    La sintaxis básica de addslashes() es la siguiente:

    string addslashes ( string $string )
    • $string: La cadena de texto que deseas escapar.

    Aquí tienes un ejemplo de cómo se usa addslashes() para escapar una cadena antes de usarla en una consulta SQL:

    $usuario = "usuario"; $contrasena = "'; DROP TABLE usuarios; --"; $contrasenaEscapada = addslashes($contrasena); $sql = "SELECT * FROM usuarios WHERE usuario='$usuario' AND contrasena='$contrasenaEscapada'";

    En este ejemplo, $contrasena contiene una cadena potencialmente maliciosa que podría utilizarse para una inyección de SQL. Al usar addslashes(), se agrega una barra invertida antes de las comillas simples, convirtiendo la cadena en '\'; DROP TABLE usuarios; --'. Esto hace que la cadena sea segura para usar en una consulta SQL porque cualquier comilla simple dentro de la cadena se tratará como un carácter literal y no como el delimitador de la consulta.

    Es importante destacar que, en aplicaciones modernas, se recomienda utilizar consultas preparadas y vinculación de parámetros en lugar de addslashes() para proteger contra la inyección de SQL, ya que es una técnica más segura y efectiva. Las consultas preparadas aseguran que los datos ingresados por el usuario no puedan alterar la estructura de la consulta SQL.

    Preg_replace

    preg_replace() es una función en PHP que se utiliza para realizar sustituciones de patrones regulares en cadenas de texto. Su nombre proviene de "preg" que es una abreviatura de "Perl-Compatible Regular Expression", lo que significa que es compatible con expresiones regulares similares a las que se utilizan en el lenguaje de programación Perl.

    La función preg_replace() se utiliza comúnmente para buscar un patrón específico en una cadena de texto y reemplazar todas las ocurrencias de ese patrón con otro texto o con el resultado de una función.

    Aquí hay un ejemplo de cómo se utiliza preg_replace() para reemplazar todas las ocurrencias de una palabra en una cadena de texto:

    $texto = "El perro marrón es un perro feliz. El dueño del perro también es feliz con su perro."; $nuevoTexto = preg_replace('/perro/', 'gato', $texto); echo $nuevoTexto;

    En este ejemplo, preg_replace() busca todas las ocurrencias del patrón /perro/ (que es la palabra "perro") en la cadena $texto y las reemplaza por "gato". El resultado será:

    El gato marrón es un gato feliz. El dueño del gato también es feliz con su gato.

    preg_replace() es especialmente útil cuando se trabaja con cadenas de texto que siguen un patrón específico y se desea realizar modificaciones en esas cadenas de manera eficiente y flexible. Se utiliza en una variedad de casos, como la manipulación de contenido web, análisis de texto, procesamiento de datos y mucho más.

    Filter_var

    filter_var() es una función en PHP que se utiliza para validar y filtrar datos de entrada. Su principal propósito es ayudar a asegurar que los datos cumplan con ciertos criterios antes de ser utilizados en una aplicación. Esta función es especialmente útil para validar datos ingresados por usuarios y garantizar que se ajusten a formatos y tipos específicos, mejorando la seguridad y la integridad de la aplicación.

    La función filter_var() se basa en el concepto de "filtros" que se aplican a los datos para verificar si cumplen con un conjunto de reglas específicas. Los filtros pueden validar datos como direcciones de correo electrónico, URLs, números enteros, direcciones IP, entre otros.

    La sintaxis básica de filter_var() es la siguiente:

    mixed filter_var ( mixed $variable , int $filter [, mixed $options ] )
    • $variable: La variable o valor que deseas validar.
    • $filter: El filtro que se aplicará a los datos. Esto puede ser una de las constantes predefinidas que especifican el tipo de filtro a aplicar.
    • $options (opcional): Un parámetro opcional que puede proporcionar opciones adicionales según el filtro seleccionado.

    Algunos ejemplos de uso de filter_var() incluyen:

    1. Validación de direcciones de correo electrónico:

      $email = "usuario@example.com"; 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."; }
    2. Validación de números enteros:

      $numero = "123"; if (filter_var($numero, FILTER_VALIDATE_INT)) { echo "El número es un entero válido."; } else { echo "El número no es un entero válido."; }
    3. Filtrado de datos HTML no seguros:

      $input = "<script>alert('¡Hola!');</script>"; $filtro = filter_var($input, FILTER_SANITIZE_SPECIAL_CHARS); echo $filtro; // Muestra el texto sin interpretar las etiquetas HTML.
    4. Validación de direcciones IP:

      $ip = "192.168.1.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."; }

    En resumen, filter_var() es una función en PHP que permite validar y filtrar datos de entrada de manera eficaz, lo que es esencial para garantizar la seguridad y la integridad de una aplicación web al procesar datos ingresados por usuarios o recibidos de otras fuentes.

    Código desarrollado para la clase

    Formulario en HTML

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sanitizar datos de un formulario</title> </head> <body> <!-- Formulario --> <form action="server.php" method="post" enctype="multipart/form-data"> <!-- Input simple --> <label><b>Datos usuario</b></label><br> <label for="nombre">Nombre:</label> <input type="text" name="nombre" id="nombre" placeholder="Nombre"><br> <label for="apellido">Apellido:</label> <input type="text" name="apellido" id="apellido" placeholder="Apellido"><br> <label for="edad">Edad:</label> <input type="number" name="edad" id="edad" placeholder="Edad"><br> <label for="email">Email:</label> <input type="email" name="correo" id="correo" placeholder="Correo"><br> <!-- Reset --> <input type="reset" value="Limpiar"> <!-- Envio --> <button name="enviar" type="submit">Enviar</button> </form> </body> </html>

    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>"; // Recuperar datos del formulario $nombre = $_POST["nombre"]; $apellido = $_POST["apellido"]; $edad = $_POST["edad"]; $correo = $_POST["correo"]; // Algunas formas de sanitizar los datos del formulario $nombre_sanitizado = htmlentities($nombre); // Esta función convierte caracteres especiales en entidades HTML, evitando así que se interpreten como código. $apellido_sanitizado = addslashes($apellido); // Esta función agrega barras invertidas delante de los caracteres que necesitan ser escapados. Estos caracteres son la comilla simple ('), comilla doble ("), barra invertida (\) y NUL (el byte NULL). $solo_palabras = preg_replace("/\d/", "", $nombre); // Esta función elimina los números del string. $solo_numeros = preg_replace("/\D/", "", $nombre); // Esta función elimina las letras del string. $correo_sanitizado = filter_var($correo, FILTER_SANITIZE_EMAIL); // Esta función filtra una variable con el filtro que se indique. En este caso, el filtro FILTER_SANITIZE_EMAIL elimina todos los caracteres excepto letras, dígitos y !#$%&'*+-/=?^_`{|}~@.[]. $int_sanitizado = filter_var($edad, FILTER_SANITIZE_NUMBER_INT); // Esta función filtra una variable con el filtro que se indique. En este caso, el filtro FILTER_SANITIZE_NUMBER_INT elimina todos los caracteres excepto dígitos y + -. $float_sanitizado = filter_var($edad, FILTER_SANITIZE_NUMBER_FLOAT); // Esta función filtra una variable con el filtro que se indique. En este caso, el filtro FILTER_SANITIZE_NUMBER_FLOAT elimina todos los caracteres excepto dígitos, + - y los separadores decimales. ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Datos del usuario</title> </head> <body> <h2>Datos del usuario sin sanitizar</h2> <p>Nombre: <?php echo $nombre; ?></p> <p>Apellido: <?php echo $apellido; ?></p> <p>Edad: <?php echo $edad; ?></p> <p>Correo: <?php echo $correo; ?></p> <h2>Datos del usuario sanitizados</h2> <p>Nombre: <?php echo $nombre_sanitizado; ?></p> <p>Apellido: <?php echo $apellido_sanitizado; ?></p> <p>Edad: <?php echo $int_sanitizado; ?></p> <p>Correo: <?php echo $correo_sanitizado; ?></p> <h2>Datos del usuario sin números</h2> <p>Nombre: <?php echo $solo_palabras; ?></p> <h2>Datos del usuario sin letras</h2> <p>Nombre: <?php echo $solo_numeros; ?></p> <h2>Datos del usuario numeros</h2> <p>Edad: <?php echo $int_sanitizado; ?></p> <p>Edad: <?php echo $float_sanitizado; ?></p> </body> </html>
      Nelson Rubio Peñaranda

      Nelson Rubio Peñaranda

      student•
      hace un año

      Muy buen aporte y super completo. Gracias

    Juan David Rueda Quiroga

    Juan David Rueda Quiroga

    student•
    hace 3 años

    A lo que vimos creo que se llama ataque XSS, el template engine twig lo soluciona pero tambien vimos como evitar SQL Injection

    Jean Garcia

    Jean Garcia

    student•
    hace un año

    En php 8, tenemos algunos ejemplos para sanitizar:

    Enteros:

    filter_input(INPUT_POST, 'name_input', FILTER_SANITIZE_NUMBER_INT);

    Textos:

    filter_input(INPUT_POST, 'name_input', FILTER_SANITIZE_FULL_SPECIAL_CHARS);

    Float:

    filter_input(INPUT_POST, 'name_input', FILTER_SANITIZE_NUMBER_FLOAT);

    Correo:

    filter_input(INPUT_POST, 'name_input', FILTER_SANITIZE_EMAIL);

    Bryan Castano

    Bryan Castano

    student•
    hace un año

    Yo he leido mucho sobre >Buenas Practicas de ciberSeguridad para Desarrollo Web SEGURO Prevenir Ataques de Injeccion de codigo Maligno { HTML , CSS , JSS injection } , SQL Injection , Command injection y todo mas aaun, desde el Lado del >Pentester \nAhora Yo lo veo desde Lado del Desarrollador para prevencion [ Blue Team ] y me ha Gustado mucho esta clase, RetMaster lo hizo muy bien explicandose Sanitizacion de inputs y formularios para prevenir que codigo corrupto llegue al ServerSide y es muy revelador y mas Facil de Prevenirlo que lo esperado gracias a Funciones como php_Filter_var() lo que elimina tags, ", ' $, { }: || && ( ) y regexp con un clasico \/ \n Yo lo veo ahora y me inspirado a ser mejor Desarrollador \nComo Leccion :: Nunca Confiar en los Usuarios \nLamentablemente hay que asumir lo Peor del >Usuario cundo se Programa / Desarrolla una Aplicacion Web \n Vivimos en un Mundo donde la Maldad esta en todos lados y debemos combatir 'Las Artes Oscuras de la Web ' \nLos Hacker nunca descanas y re reInventas nuevas tecnicas d'Ataques mas sofisiticadas todo los dias ; \nSiempre habra un Desarrollador Seguro y un Hacker Malgino que quiere vulnerar a la menor oportunidad que le demos en un sitio web No Seguro \n El Lado Oscuro de la tecnologia es grande y lucrativo tambien y debemos luchar contra ellos que usan sus conocimientos para el Mal['Shame'] .

    echo "Nunca Pares d'Aprender\n";

    Leonardo López

    Leonardo López

    student•
    hace 2 años

    Excelente explicación, gran curso. Me ha cambiado mucho la mentalidad de estudiar en Platzi y cada día quiero seguir aprendiendo más con este profesor.

      Máximo Calderon

      Máximo Calderon

      student•
      hace 2 años

      X2 !!!

    José Samuel Mena Reyes

    José Samuel Mena Reyes

    student•
    hace 3 años

    Cuando el profesor realiza la sanitización del email, aquí en la documentación de PHP, se encuentran el listado de todos los filtros y que cosas pueden hacer, Filtros de saneamiento

    Rosina Garcia Pilcomayo

    Rosina Garcia Pilcomayo

    student•
    hace 3 años

    Hola, una pregunta, a que se refiere con "ESCAPAR UN CARACTER"? en la documentación dice que es por motivos de seguridad que se utiliza esta función pero para evitar vulnerabilidades en la base de datos. La función no reemplaza el caracter que puede dar problemas, como la comilla simple o doble, entonces, exactamente en qué ayuda insertar backslashes en el formulario?

      Ermilo Joel Dorantes Uc

      Ermilo Joel Dorantes Uc

      student•
      hace 3 años

      Dejar pasar una comilla simple o doble puede ser un dolor de cabeza para tu código, lo mejor es escapar (cambiar) por diagonales invertidas.

      Kenneth Angulo L

      Kenneth Angulo L

      student•
      hace 3 años

      Hola Rosina . En programacion escapar un caracter es: .

      Evitar que un caracter rompa una cadena de texto, o interrumpa una cadena antes de terminar

      . Ejemplo :

      echo "esta es mi larga cadena de caracteres y quiero citar a platon cuando dijo: "Only the dead have seen the end of war."";

      si te das cuenta, cuando la cita empieza, PHP entiende aqui termina el echo, pero eso no era lo que queriamos. entonces debemos escapar las comillas de la cita para que PHP no interprete que alli termina el echo. asi:

      echo "esta es mi larga cadena de caracteres y quiero citar a platon cuando dijo: \"Only the dead have seen the end of war.\"";

      Ahora si el echo sale completo.

    Juan Osio

    Juan Osio

    student•
    hace un año

    No se si lo explica más adelante pero además de sanitizar podemos validar también ciertos campos son esa misma función filter_var($variable, $filtro]):

    • FILTER_VALIDATE_BOOLEAN: Valida como un booleano.
    • FILTER_VALIDATE_EMAIL: Valida una dirección de correo electrónico.
    • FILTER_VALIDATE_URL: Valida una URL.
    • FILTER_VALIDATE_INT: Valida un número entero.
    • FILTER_VALIDATE_FLOAT: Valida un número de coma flotante.

    Ejemplo:

    $email = "usuario@gmail.com"; if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) { echo "Correo electrónico no válido."; } else { echo "Correo electrónico válido."; }
    LESTHER XITUMUL MANUEL

    LESTHER XITUMUL MANUEL

    student•
    hace 2 años

    Validación de formularios

    Para validar correctamente si los campos/inputs de un formulario de HTML se han enviado al servidor cuando el action indica un archivo PHP, podemos utilizar varias técnicas, como isset, empty y otras validaciones adicionales.

    Utilizar isset para verificar si se ha enviado el campo al servidor:

    if (isset($_POST['nombre'])) { // El campo 'nombre' ha sido enviado al servidor }

    isset devuelve true si el campo está presente en la solicitud POST y false si no lo está.

    Utilizar empty para verificar si el campo no está vacío:

    if (!empty($_POST['nombre'])) { // El campo 'nombre' no está vacío }

    empty es una función en PHP que devuelve false si el campo no está vacío y true si está vacío. Es importante tener en cuenta que empty considera los siguientes casos como vacíos: una cadena vacía "", el número 0, la cadena "0", un arreglo vacío y el valor null.

    Realizar validaciones adicionales para asegurarse de que el campo contenga más que solo espacios en blanco:

    if (isset($_POST['nombre']) && !empty(trim($_POST['nombre']))) { // El campo 'nombre' contiene más que simplemente espacios en blanco }

    Utilizando la función trim, eliminamos cualquier espacio en blanco al inicio y al final del valor del campo, y luego verificamos si el resultado no está vacío.

    Es importante tener en cuenta que estas validaciones se deben realizar para cada campo del formulario que se espera recibir en el archivo PHP. Además, se pueden aplicar otras técnicas de validación, como verificar el formato de un correo electrónico o el rango de valores permitidos en un campo numérico.

    Recuerda que la validación de los campos de un formulario es crucial para garantizar la integridad de los datos y la seguridad de la aplicación. Además de las validaciones mencionadas, es recomendable utilizar técnicas como la validación del lado del cliente utilizando JavaScript y la validación del lado del servidor utilizando filtros y validaciones personalizadas en el archivo PHP.

    Juan Omar Palma álvarez

    Juan Omar Palma álvarez

    student•
    hace 3 años

    FILTER_SANITIZE_NUMBER_INT no te elimina los guiones o signos de menos 4-hola-7 me lo muestra así: 4--7

    Hallking Quesada Medina

    Hallking Quesada Medina

    student•
    hace 3 años

    muy buena clase. con la funcion filter_var tambien podemos hacer lo siguiente.

    FILTER_VALIDATE_INT: valida si el dato de entrada es un número entero. FILTER_VALIDATE_FLOAT: valida si el dato de entrada es un número de punto flotante. FILTER_VALIDATE_BOOLEAN: valida si el dato de entrada es un valor booleano (true, false, 1, 0, 'true', 'false', '1', '0'). FILTER_VALIDATE_IP: valida si el dato de entrada es una dirección IP válida. FILTER_VALIDATE_URL: valida si el dato de entrada es una URL válida. FILTER_SANITIZE_STRING: elimina las etiquetas HTML y los caracteres especiales de una cadena de texto.
    Diego Frank Lipa Choque

    Diego Frank Lipa Choque

    student•
    hace 3 años

    index.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sanitizando datos</title> </head> <body> <form action="server.php" method="post"> <label for="nombre">Nombre:</label> <input type="text" name="nombre" id="nombre"> <label for="username">Username:</label> <input type="text" name="username" id="username"> <label for="email">Correo:</label> <input type="text" name="email" id="email"> <label for="age">Edad:</label> <input type="text" name="age" id="age"> <button type="submit">Mandar formulario</button> </form> </body> </html>

    server.php

    <?php $name = $_POST["nombre"]; $username = $_POST["username"]; $email = $_POST["email"]; $age = $_POST["age"]; $htmlentities = htmlentities($name); $addslashes = addslashes($username); $onlywords = preg_replace("/\d/", "", $username); $onlynumbers = preg_replace("/\D/", "", $username); $email = filter_var($email, FILTER_SANITIZE_EMAIL); $sanitize_int = filter_var($age, FILTER_SANITIZE_NUMBER_INT); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Datos de mi usuario</title> </head> <body> <p>Nombre:</p> <?= $htmlentities ?> <p>Username:</p> <?= $addslashes ?> <p>Username sin numeros:</p> <?= $onlywords ?> <p>Username sin letras:</p> <?= $onlynumbers ?> <p>Email:</p> <?= $email ?> <p>Edad:</p> <?= $sanitize_int ?> </body> </html>```
    Lucas Daniel Ferreyra de Moraiz

    Lucas Daniel Ferreyra de Moraiz

    student•
    hace 3 años

    Esto se pone cada vez mejor!!!

    Rubén Cuello

    Rubén Cuello

    student•
    hace 3 años

    Muy bueno, aunque no me parece muy útil la forma de sanitizar el número de esa forma. Quitar los caracteres raros en una dirección de email tampoco parece ser una buena práctica, ya que el email es algo que debe existir, y se debe poder enviar correos a esa dirección. Si hay algún caracter erróneo debería fallar el envío de datos.

      Francisco Biasuso

      Francisco Biasuso

      student•
      hace 3 años

      Los signos especiales como ()<>,;:"[]ç%& no son aceptados como válidos para un email, y algunos de ellos pueden ser usado para generar instrucciones malintencionadas como lo del fondo rojo que decía "Hola, te jakié", por lo tanto hay que asegurarse de que sea un nombre de email permitido. Lo de los números era tan solo un ejemplo y una posibilidad, puedes usar la lógica de validación que tu prefieras o más se acerque a tus necesidades.

      Kenneth Angulo L

      Kenneth Angulo L

      student•
      hace 3 años

      Claro, lo que el profesor nos muestra son ejemplos de que se puede hacer y como se puede hacer !!. . En proyectos reales habra casos de uso particulares. Y hay que prestarles mas atencion y detalle. Es mas los frameworks usados (si es que no hiciste un desarrollo desde cero) ya tienen sus propias librerias y tienen controlado este tipo de cosas.

    Kenneth Angulo L

    Kenneth Angulo L

    student•
    hace 3 años

    Sanitizar= Tomar control de lo que los usuarios envian y lipiarlo para evitar problemas.🔍 . Traduccion: Tirarles la chancla cuando envien basura ! 😂

    Victor Daniel Alcibar Vigueras

    Victor Daniel Alcibar Vigueras

    student•
    hace 3 años

    Hola, super la clase. Les comparto que strip_tags te ayudará a quitar las etiquetas HTML y PHP de un string.

    Aka SinssChoss

    Aka SinssChoss

    student•
    hace 3 años

    Apunte 🤗

    index.html

    <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Jugando con PHP</title> </head> <body> <form action="server.php" method="POST" enctype="multipart/form-data"> <!-- Input Simple --> <label for="nombre">Nombre: </label> <input type="text" name="nombre" id="nombre"> <br> <label for="apellido">Apellido: </label> <input type="text" name="apellido" id="apellido"> <br> <label for="correo">Correo: </label> <input type="text" name="correo" id="correo"> <br> <label for="celular">Celular: </label> <input type="text" name="celular" id="celular"> <br> <button type="submit" name="btnEnviar">Enviar datos</button> </form> </body> </html>

    server.php

    <?php echo "<pre>"; print_r($_POST); echo "</pre>"; $name = $_POST["nombre"]; $last_name = $_POST["apellido"]; $email = $_POST["correo"]; $cellphone = $_POST["celular"]; // Inhabilita el código HTML de una cadena de caracteres $last_name_filter_html = htmlentities($last_name); // Deja solo letras en una cadena de caracteres $name_only_letters = preg_replace("/\d/", "", $name); // Deja solo números en una cadena de caracteres $cellphone_only_numbers = preg_replace("/\D/", "", $cellphone); // Sanitiza el correo (quita (), "", pero basta con colocar el tipo de input adecuado en HTML) $email_ok = filter_var($email, FILTER_SANITIZE_EMAIL); echo "last_name_filter_html = $last_name_filter_html<br>"; echo "name_only_letters = $name_only_letters<br>"; echo "cellphone_only_numbers = $cellphone_only_numbers<br>"; echo "email_ok = $email_ok"; ?>

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads