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.
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.
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:
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().
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.
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.
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.
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:
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.
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.
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.
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".
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:
stringaddslashes(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:
$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:
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.";}
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.";}
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.
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
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="ie=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Sanitizar datos de un formulario</title></head><body><!-- Formulario --><formaction="server.php"method="post"enctype="multipart/form-data"><!-- Input simple --><label><b>Datos usuario</b></label><br><labelfor="nombre">Nombre:</label><inputtype="text"name="nombre"id="nombre"placeholder="Nombre"><br><labelfor="apellido">Apellido:</label><inputtype="text"name="apellido"id="apellido"placeholder="Apellido"><br><labelfor="edad">Edad:</label><inputtype="number"name="edad"id="edad"placeholder="Edad"><br><labelfor="email">Email:</label><inputtype="email"name="correo"id="correo"placeholder="Correo"><br><!-- Reset --><inputtype="reset"value="Limpiar"><!-- Envio --><buttonname="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.?><!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="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: <?phpecho$nombre;?></p><p>Apellido: <?phpecho$apellido;?></p><p>Edad: <?phpecho$edad;?></p><p>Correo: <?phpecho$correo;?></p><h2>Datos del usuario sanitizados</h2><p>Nombre: <?phpecho$nombre_sanitizado;?></p><p>Apellido: <?phpecho$apellido_sanitizado;?></p><p>Edad: <?phpecho$int_sanitizado;?></p><p>Correo: <?phpecho$correo_sanitizado;?></p><h2>Datos del usuario sin números</h2><p>Nombre: <?phpecho$solo_palabras;?></p><h2>Datos del usuario sin letras</h2><p>Nombre: <?phpecho$solo_numeros;?></p><h2>Datos del usuario numeros</h2><p>Edad: <?phpecho$int_sanitizado;?></p><p>Edad: <?phpecho$float_sanitizado;?></p></body></html>
Muy buen aporte y super completo. Gracias
A lo que vimos creo que se llama ataque XSS, el template engine twig lo soluciona pero tambien vimos como evitar SQL Injection
En php 8, tenemos algunos ejemplos para sanitizar:
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";
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.
X2 !!!
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
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?
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.
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.
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.
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.
FILTER_SANITIZE_NUMBER_INT no te elimina los guiones o signos de menos
4-hola-7
me lo muestra así:
4--7
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.
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.
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.
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.
Sanitizar= Tomar control de lo que los usuarios envian y lipiarlo para evitar problemas.🔍
.
Traduccion: Tirarles la chancla cuando envien basura ! 😂
Hola, super la clase.
Les comparto que strip_tags te ayudará a quitar las etiquetas HTML y PHP de un string.
<?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";?>