Un formulario web , formulario HTML o formulario en una página web permite al usuario introducir datos que se envían a un servidor para su procesamiento. Los formularios pueden parecerse a los formularios en papel o a los formularios de bases de datos , ya que los usuarios web los rellenan mediante casillas de verificación , botones de opción o campos de texto . Por ejemplo, los formularios se pueden usar para introducir datos de envío o de tarjeta de crédito para pedir un producto, o para recuperar resultados de búsqueda de un motor de búsqueda .
Descripción

Los formularios están encerrados en el elemento HTML . Este elemento HTML especifica el punto final de comunicación al que se deben enviar los datos ingresados en el formulario y el método de envío de los datos, o .<form>GETPOST
Elementos
Los formularios pueden estar compuestos por elementos estándar de interfaz gráfica de usuario :
<button>— un botón que puede vincularse a una acción como enviar el formulario, restablecerlo o ejecutar una función de JavaScript.<input>— un elemento para la entrada de datos del usuario. El elemento varía según el valor de sutypeatributo.<textarea>— muy similar al campo de entrada, excepto que permite mostrar e introducir varias filas de datos.<text><textarea><select>— una lista desplegable que muestra una lista de elementos que el usuario puede seleccionar
El elemento de entrada puede tener los siguientes tipos:
text— un cuadro de texto simple que permite introducir una sola línea de texto.email- un tipo que requiere una dirección de correo electrónico parcialmente validada<text>number- un tipo que requiere un número<text>password— similar a , se utiliza con fines de seguridad, en el que los caracteres escritos son invisibles o reemplazados por símbolos como *<text>tel— un número de teléfonoradio— un botón de opciónfile— un control de selección de archivos para cargar un archivoreset— un botón de reinicio que, al activarse, le indica al navegador que restaure los valores del formulario actual a sus valores iniciales.submit— un botón que le indica al navegador que realice alguna acción sobre el formulario (normalmente enviarlo a un servidor).
La imagen de muestra de la derecha muestra la mayoría de estos elementos:
- un cuadro de texto que solicita su nombre
- un par de botones de opción que te piden que elijas entre valores de género
- un cuadro de selección que te ofrece una lista de colores de ojos para elegir.
- un par de casillas de verificación para marcar si te corresponden
- un área de texto para describir tu capacidad atlética
- un botón de envío para enviar los valores actuales del formulario al servidor
Estos elementos básicos proporcionan los elementos de interfaz gráfica de usuario (GUI) más comunes, pero no todos. Por ejemplo, no hay equivalentes a una vista de árbol o una vista de cuadrícula .
Sin embargo, una vista de cuadrícula se puede imitar utilizando una tabla HTML estándar donde cada celda contiene un elemento de entrada de texto. Una vista de árbol también se puede imitar mediante tablas anidadas o, de forma más apropiada desde el punto de vista semántico , listas anidadas . En ambos casos, un proceso del lado del servidor se encarga de procesar la información, mientras que JavaScript gestiona la interacción del usuario. Existen implementaciones de estos elementos de interfaz disponibles a través de bibliotecas de JavaScript como jQuery .
HTML 4 introdujo la etiqueta, que está destinada a representar un título en una interfaz de usuario, y se puede asociar con un control de formulario específico especificando el atributo del control en el atributo de la etiqueta label. [ 1 ] Esto permite que las etiquetas permanezcan con sus elementos cuando se redimensiona una ventana y permite una funcionalidad más similar a la de escritorio (por ejemplo, al hacer clic en la etiqueta de un botón de radio o una casilla de verificación se activará el elemento de entrada asociado).<label>idfor
HTML 5 introduce varios tipos de entrada que pueden ser representados por otros elementos de la interfaz. Algunos se basan en campos de entrada de texto y están destinados a introducir y validar datos comunes específicos. Estos incluyen emailla introducción de direcciones de correo electrónico, telnúmeros de teléfono y numbervalores numéricos. Hay atributos adicionales para especificar campos obligatorios, campos que deben tener el foco del teclado cuando se carga la página web que contiene el formulario, y texto de marcador de posición que se muestra dentro del campo pero que no es entrada del usuario (como el texto "Buscar" que se muestra en muchos campos de entrada de búsqueda antes de introducir un término de búsqueda). Estas tareas solían manejarse con JavaScript , pero se habían vuelto tan comunes que se agregó soporte para ellas al estándar. El datetipo de entrada muestra un calendario del que el usuario puede seleccionar una fecha o un rango de fechas. [ 2 ] [ 3 ] Y el colortipo de entrada puede representarse como un texto de entrada que simplemente verifica que el valor introducido sea una representación hexadecimal correcta de un color, según la especificación, [ 4 ] o un widget selector de color (esta última es la solución utilizada en la mayoría de los navegadores que admiten este atributo).
Envío
Cuando se envían datos introducidos en formularios HTML, los nombres y valores de los elementos del formulario se codifican y se envían al servidor en un mensaje de solicitud HTTP mediante GET o POST . Históricamente, también se utilizaba el transporte por correo electrónico . [ 5 ] El tipo MIME predeterminado (tipo de medio de Internet) , application/x-www-form-urlencoded , se basa en una versión muy antigua de las reglas generales de codificación de porcentaje de URI , con varias modificaciones, como la normalización de saltos de línea y la sustitución de espacios por " +" en lugar de " %20". También está disponible otra codificación posible, el tipo de medio de Internet multipart/form-data , que es común para el envío de archivos mediante POST.
Uso con lenguajes de programación
Los formularios suelen combinarse con programas escritos en diversos lenguajes de programación para permitir a los desarrolladores crear sitios web dinámicos . Los lenguajes más populares incluyen tanto lenguajes del lado del cliente como del lado del servidor.
Aunque se puede utilizar cualquier lenguaje de programación en el servidor para procesar los datos de un formulario, los lenguajes más utilizados son los lenguajes de scripting , que suelen tener una funcionalidad de manejo de cadenas más robusta que los lenguajes de programación como C, y también cuentan con una gestión automática de la memoria que ayuda a prevenir ataques de desbordamiento de búfer .
Lado del cliente
El lenguaje de scripting del lado del cliente por excelencia para sitios web es JavaScript . El uso de JavaScript en el Modelo de Objetos del Documento (DOM) da lugar al método de HTML dinámico , que permite la creación y modificación dinámica de una página web dentro del navegador.
Si bien los lenguajes del lado del cliente utilizados con formularios tienen limitaciones, a menudo sirven para realizar la validación previa de los datos del formulario o para prepararlos para su envío a un programa del lado del servidor. Sin embargo, este uso está siendo reemplazado por los nuevos tipos de campo y atributos de HTML5 .inputrequired
Ejecución del lado del servidor
El código del lado del servidor puede realizar una amplia gama de tareas para crear sitios web dinámicos que, por razones técnicas o de seguridad, el código del lado del cliente no puede : desde autenticar un inicio de sesión , hasta recuperar y almacenar datos en una base de datos , pasando por la corrección ortográfica y el envío de correos electrónicos . Una ventaja significativa de la ejecución del lado del servidor sobre la del lado del cliente es la concentración de la funcionalidad en el servidor en lugar de depender de diferentes navegadores web para implementar diversas funciones de forma consistente y estandarizada . Además, el procesamiento de formularios en un servidor suele resultar en una mayor seguridad si la ejecución del lado del servidor está diseñada para no confiar en los datos proporcionados por el cliente e incluye técnicas como la sanitización de HTML . Una desventaja del código del lado del servidor es la escalabilidad : el procesamiento del lado del servidor para todos los usuarios se realiza en el servidor, mientras que el procesamiento del lado del cliente se realiza en los ordenadores de cada cliente.

Lenguas interpretadas
Algunos de los lenguajes interpretados que se utilizan habitualmente para diseñar formularios interactivos en el desarrollo web son PHP , Python , Ruby , Perl , JSP , Adobe ColdFusion y algunos de los lenguajes compilados que se utilizan habitualmente son Java y C# con ASP.NET .
PHP
PHP es un lenguaje muy común utilizado para la "programación" del lado del servidor y es uno de los pocos lenguajes creados específicamente para la programación web . [ 6 ] [ 7 ]
Para usar PHP con un formulario HTML, la URL del script PHP se especifica en el actionatributo de la etiqueta del formulario. El archivo PHP de destino accede entonces a los datos pasados por el formulario a través de $_POSTlas $_GETvariables de PHP, dependiendo del valor del methodatributo utilizado en el formulario. Aquí hay un script PHP básico para manejar formularios que mostrará el contenido del formulario.nombre de pilaCampo de entrada en la página:
formulario.html
< ! DOCTYPE html > < html lang = " en " > <head> <title> Formulario </title> </head> <body> < form action = " form_handler.php " > <p> <label> Nombre : < input name = " first_name " / > </label> </p> <p> < button type = " submit " > Enviar </button> </p> </form> </body> </html>manejador_de_formularios.php
<!DOCTYPE html> <?php // Solicitando el valor de la variable externa "first_name" y filtrándolo. $firstName = filter_input ( INPUT_GET , "first_name" , FILTER_SANITIZE_STRING ); ?> < html lang = "en" > < head > < title > Salida </ title > </ head > < body > < p > <?php echo "Hola, { $firstName } !" ; /* imprimiendo el valor */ ?> </ p > </ body > </ html >El código de ejemplo anterior utiliza la función de PHP para sanitizar la entrada del usuario antes de insertarla en la página. Simplemente imprimir (reproducir) la entrada del usuario en el navegador sin verificarla primero es algo que debe evitarse en los procesadores de formularios seguros: si un usuario ingresó el código JavaScript en elfilter_input()<script>alert(1)</script>nombre de pilacampo, el navegador ejecutaría el script en elmanejador_de_formularios.phppágina, como si hubiera sido codificada por el desarrollador; de esta forma se podría ejecutar código malicioso. se introdujo en PHP 5.2. Los usuarios de versiones anteriores de PHP podían usar la función o expresiones regulares para sanitizar la entrada del usuario antes de hacer algo con ella.filter_input()htmlspecialchars()
lenguaje de programación Perl
Perl es otro lenguaje que se usa frecuentemente para el desarrollo web . Los scripts de Perl se utilizan tradicionalmente como aplicaciones de Interfaz de Puerta de Enlace Común (CGI). De hecho, Perl es una forma tan común de escribir CGI que a menudo se confunden. Las CGI pueden escribirse en otros lenguajes además de Perl (la compatibilidad con múltiples lenguajes es un objetivo de diseño del protocolo CGI) y existen otras formas de hacer que los scripts de Perl interactúen con un servidor web además de usar CGI (como FastCGI , Plack o mod_perl de Apache ).
Los scripts CGI de Perl fueron en su momento una forma muy común de escribir aplicaciones web . Sin embargo, muchos proveedores de alojamiento web hoy en día solo admiten PHP, y los desarrolladores de aplicaciones web suelen buscar compatibilidad con este lenguaje.
Un CGI moderno de Perl 5 que utilice el módulo CGI con un formato similar al anterior podría tener el siguiente aspecto:
manejador_de_formularios.pl
#!/usr/bin/env perl use strict ; use CGI qw(:standard) ;mi $nombre = param ( "first_name" ); print header ; print html ( body ( p ( "Hola, $nombre!" ), ), );Scripts para enviar formularios por correo electrónico
Entre los tipos de scripts del lado del servidor más sencillos y comunes se encuentra el que simplemente envía por correo electrónico el contenido de un formulario. Sin embargo, este tipo de script es frecuentemente utilizado por spammers , y muchos de los scripts más populares para enviar formularios por correo electrónico son vulnerables al secuestro con el fin de enviar spam. Uno de los scripts más populares de este tipo era "FormMail.pl", creado por Matt's Script Archive . Actualmente, este script ya no se usa ampliamente en nuevos desarrollos debido a la falta de actualizaciones, problemas de seguridad y dificultades de configuración.
constructores de formularios
Algunas empresas ofrecen formularios como servicio alojado . Por lo general, estas empresas proporcionan algún tipo de editor visual, herramientas de informes e infraestructura para crear y alojar los formularios, que pueden integrarse en páginas web. [ 8 ] Las empresas de alojamiento web ofrecen plantillas a sus clientes como servicio adicional. Otros servicios de alojamiento de formularios ofrecen formularios de contacto gratuitos que el usuario puede instalar en su propio sitio web pegando el código del servicio en el HTML del sitio.
Historia
Cuando Tim Berners-Lee desarrolló HTML en 1991 y posteriormente lo hizo público en 1993 [ 9 ] [ 10 ] , tenía 18 etiquetas. [ 10 ] El elemento de formulario y los campos de formulario no estaban incluidos en esta primera versión.
De hecho, el "formulario HTML" tal como lo conocemos no fue inventado en un solo momento ni por una sola persona. Muchas personas, organizaciones y múltiples navegadores participaron en el desarrollo de los formularios HTML y en la estandarización de las etiquetas de formulario en HTML 2.0. [ 11 ] [ 12 ]
Primero, Dave Raggett desarrolló HTML+ . Casi al mismo tiempo, se implementaron por primera vez formularios HTML en el navegador Viola . [ 13 ] Pero el mayor impulso fue el navegador Mosaic . Específicamente, NCSA Mosaic para X 2.0, porque los formularios no estaban disponibles en la primera versión de Mosaic en abril de 1993. [ 11 ]
Con Mosaic 2.0, los formularios se volvieron ampliamente accesibles y pronto todas las empresas querían su propio formulario de contacto. Durante este tiempo, las etiquetas de formulario no eran etiquetas HTML oficiales, pero los navegadores las admitían de todos modos. El cambio llegó más tarde, en 1995, con HTML 2.0, cuando se agregaron las etiquetas FORM, INPUT, SELECT y TEXTAREA a HTML. [ 12 ]
Véase también
Referencias
- ↑ "HTML/Elements/label" . wiki de w3.org . 19 de mayo de 2023.
- ↑ Satrom, Brandon (noviembre de 2011). "Mejores formularios web con formularios HTML5" . Revista MSDN . Microsoft . Consultado el 20 de febrero de 2014 .
- ↑ "Formularios – HTML5" . w3.org . W3C . Consultado el 20 de febrero de 2014 .
- ↑ "input type=color – control de color-well" . w3.org . W3C . Consultado el 31 de octubre de 2014 .
- ↑ La compatibilidad con agentes de usuario para el envío de formularios HTML por correo electrónico , utilizando una URL 'mailto' como acción del formulario, se propuso en la sección 5.6 de la RFC 1867, durante la era de HTML 3.2. Varios navegadores web lo implementaron invocando un programa de correo electrónico independiente, utilizando sus propias capacidades SMTP rudimentarias , o convirtiéndose en suites de Internet mediante la implementación de clientes de correo electrónico completos. Aunque a veces poco fiable, fue brevemente popular como una forma sencilla de transmitir datos de formularios sin involucrar un servidor web niscripts CGI .
- ↑ "PHP: Preprocesador de hipertexto" .
- ↑ "Enciclopedia Web" . Archivado del original el 16 de agosto de 2022. Consultado el 26 de septiembre de 2012 .
- ↑ Garofalo, Josh. "Introducción a los formularios en línea y a los creadores de formularios" . Blog de Blitzen .
- ↑ "Historial de HTML" . w3schools.in . W3schools . Consultado el 17 de junio de 2026 .
- 1 2 "Lenguaje de marcado de hipertexto (HTML)" . w3.org . W3C . Consultado el 17 de junio de 2026 .
- 1 2 "La historia de los primeros formularios en línea: De terminales a buzones" . forms.app . forms.app . Consultado el 17 de junio de 2026 .
- 1 2 "Lenguaje de marcado de hipertexto - 2.0" . w3.org . W3C . Consultado el 17 de junio de 2026 .
- ↑ "ViolaWWW" . webdesignmuseum.org . Museo del Diseño Web . Consultado el 17 de febrero de 2022 .
Enlaces externos
- Formularios en documentos HTML , la página de especificaciones del W3C para formularios en HTML 4.
- Especificación de formularios HTML5
- Wikilibros: Lenguaje de marcado de hipertexto/Formularios
- Prueba las propiedades HTML.
- Técnicas de interfaz de usuario
- etiquetas HTML
- HTML
