# Formulari web

Un formulari web o formulari HTML en una pàgina web permet que un usuari introdueixi dades que s'envien a un servidor per al seu processament. Els formularis poden assemblar-se als formularis de paper o de base de dades perquè els usuaris web omplen els formularis mitjançant caselles de selecció, botons de ràdio o camps de text. Per exemple, els formularis es poden utilitzar per introduir les dades de l'enviament o de la targeta de crèdit per demanar un producte o es poden utilitzar per recuperar els resultats de la cerca d'un motor de cerca.

## Descripció

Els formularis estan tancats a l'etiqueta del formulari HTML. Aquesta etiqueta especifica el punt final de comunicació que ha de presentar la informació introduïda al formulari i el mètode de presentació de les dades, GET o POST.

### Elements

Els formularis poden estar formats per elements gràfics estàndard de la interfície d'usuari:
* text: un quadre de text senzill que permet l'entrada d'una sola línia de text.
* correu electrònic: un tipus de text que requereix una adreça de correu electrònic parcialment validada
* número: un tipus de text que requereix un número
* la contrasenya, similar al text, s'utilitza per a propòsits de seguretat, en què els caràcters escrits són invisibles o substituïts per símbols com *
* ràdio: un botó d'opció
* fitxer: un control de selecció de fitxers per carregar un fitxer
* reset - un botó de restabliment que, quan s'activa, indica al navegador que restauri els valors als seus valors inicials.
* enviar - un botó que indica al navegador que actuï sobre el formulari (normalment per enviar-lo a un servidor)
* textarea: igual que el camp d'entrada de text, excepte un textarea, es permet mostrar i introduir diverses files de dades
* seleccioneu - una llista desplegable que mostra una llista dels elements que un usuari pot seleccionar
La imatge d'exemple a la dreta mostra la majoria d'aquests elements:
* un quadre de text que demana el teu nom
* un parell de botons de ràdio que us demanen que escolliu el vostre sexe
* una casella de selecció que us ofereix una llista de colors per triar
* un parell de caselles de verificació per fer clic sobre si us apliquen
* una àrea de text per descriure la vostra habilitat atlètica
* un botó d'enviament per enviar-lo al servidor

## Presentació

Quan es presenten dades que s'han introduït en formularis HTML, els noms i valors dels elements del formulari es codifiquen i s'envien al servidor en un missatge de sol·licitud HTTP utilitzant GET o POST. Històricament, també es va utilitzar un transport per correu electrònic [5]. El tipus de mímica per defecte, el tipus d'aplicació d'Internet / x-www-form-urlencoded, es basa en una versió molt primerenca de les regles de codificació percentual general de l'URI, amb una sèrie de modificacions com ara la normalització de la línia nova i la substitució d'espais amb "+" en lloc de "% 20". També hi ha una altra codificació possible, un tipus de lletra multipart / form-data de mitjans d'Internet, i és comú per als enviaments de fitxers basats en POST.

## Utilitza amb els llenguatges de programació

Els formularis solen combinar-se amb programes escrits en diversos llenguatges de programació per permetre als desenvolupadors crear llocs web dinàmics. Els idiomes més populars inclouen tant els idiomes del costat del client com del servidor.
Encara que qualsevol llenguatge de programació es pugui utilitzar al servidor per processar les dades d'un formulari, els idiomes més utilitzats són llenguatges de script, que tendeixen a tenir una funcionalitat de gestió de cadenes més forta que els llenguatges de programació com C, i també tenen una gestió automàtica de memòria que ajuda a prevenir Atacs de rebasamiento de buffer.

### Al costat del client

El llenguatge de script de facto del costat del client per a llocs web és JavaScript. L'ús de JavaScript en el Model d'objectes de document (DOM) condueix al mètode de Dynamic HTML que permet la creació dinàmica i la modificació d'una pàgina web dins del navegador.
Tot i que els llenguatges del costat del client s'utilitzen conjuntament amb els formularis són limitats, sovint poden servir per fer la validació prèvia de les dades del formulari i / o preparar les dades del formulari per enviar-los a un programa del servidor. Tanmateix, aquest ús se substitueix pels nous tipus de camp d'entrada d'HTML5 i l'atribut obligatori.

### Execució del costat del servidor

El codi del servidor pot fer una gran varietat de tasques per crear llocs web dinàmics que, per motius tècnics o de seguretat, el codi del client no pot: autenticar un inici de sessió, recuperar i emmagatzemar dades en una base de dades, deletrear correccions, enviar correu electrònic. Un avantatge important per a l'execució del costat del costat del servidor és la concentració de la funcionalitat en el servidor en comptes de basar-se en diferents navegadors web per implementar diverses funcions d'una manera uniforme i estandarditzada. A més, processar formularis en un servidor sovint dona lloc a una major seguretat si l'execució del servidor està dissenyada per no confiar en les dades subministrades pel client i inclou tècniques com la desinfecció HTML. Un desavantatge del codi del costat del servidor és el processament del processament del servidor de scalability per a tots els usuaris que es produeixen al servidor, mentre que el processament del costat del client es produeix en equips client individuals.

### Llenguatges interpretats

Alguns dels llenguatges interpretats que s'utilitzen habitualment per dissenyar formularis interactius en el desenvolupament web són PHP, Python, Ruby, Perl, JSP, Adobe ColdFusion i alguns dels llenguatges compilats que s'utilitzen habitualment són Java i C # amb ASP.NET.

#### PHP

PHP és un llenguatge molt comú en la programació del costat del servidor i és un dels pocs llenguatges creats específicament per a la programació web.
Per utilitzar PHP amb un formulari HTML, s'especifica la URL del script PHP en l'atribut action del tag del formulari. El fitxer PHP accedeix a les dades passades pel formulari mitjançant les variables de PHP $_POST o $_GET, segons quin sigui el valor de l'atribut method usat en el formulari. Here is a basic form handler PHP script that will display the contents of the "firstname" input field on the page:
formulari.html
form_handler.php
El codi d'exemple anterior utilitza la funció filter_input de PHP per desinfectar l'entrada de l'usuari abans d'inserir-la a la pàgina. Simplement, imprimir (ressaltar) l'entrada de l'usuari al navegador sense comprovar-ho primer és una cosa que s'hauria d'evitar en els processadors de formularis segurs: si un usuari va introduir el codi Javascript <script> ('Error - Virus instal·lat') </ script> nom-camp d'usuari, el navegador executaria l'script a la pàgina form_handler.php, tal com si hagués estat codificat pel desenvolupador; El codi maliciós es podria executar d'aquesta manera. filter_input es va introduir a PHP 5.2. Els usuaris de versions anteriors de PHP podrien utilitzar la funció htmlspecialchars o expressions regulars per a desinfectar l'entrada de l'usuari abans de fer res amb ell.

#### Llenguatge de programació Perl

Perl és un altre llenguatge sovint utilitzat per al desenvolupament web. Les seqüències d'ordres Perl s'utilitzen tradicionalment com a aplicacions d'interfície Common Gateway (CGIs). De fet, Perl és una forma tan habitual d'escriure CGIs que ambdós solen confondre's. Els CGIs es poden escriure en altres idiomes que Perl (la compatibilitat amb diversos idiomes és un objectiu de disseny del protocol CGI) i hi ha altres maneres de fer que les seqüències d'ordres Perl s'interoperen amb un servidor web que no pas que utilitzar CGI (com FastCGI, Plack o el mod_perl d'Apache) .
Els CGIs de Perl van ser una vegada una forma molt habitual d'escriure aplicacions web. Tanmateix, molts amfitrions d'internet avui només admeten PHP de manera eficaç, i els desenvolupadors d'aplicacions web sovint busquen compatibilitat amb ells.
Un CGI Perl 5 modern que utilitza el mòdul CGI amb un formulari similar al que es mostra a dalt pot semblar:
form_handler.pl

#### Guions de formulari a correu electrònic

Entre els tipus d'escriptori més senzills i més habituals del servidor es troba el que simplement envia correus electrònics als continguts d'un formulari enviat. Sovint, aquest tipus d'script és explotat pels spammers, i moltes de les seqüències d'ordres de forma a correu més populars en ús són vulnerables al segrest per tal d'enviar missatges de correu brossa. Una de les seqüències d'ordres més populars d'aquest tipus era "FormMail.pl" realitzada per Matt's Script Archive. Avui, aquest script ja no s'utilitza àmpliament en un nou desenvolupament a causa de la manca d'actualitzacions, problemes de seguretat i dificultat de configuració.

### Constructors de formularis

Algunes empreses ofereixen formularis com a servei allotjat. Normalment, aquestes empreses ofereixen algun tipus d'editor visual, eines d'informes i infraestructures per crear i allotjar formularis, que es poden integrar a pàgines web [8]. Les empreses d'allotjament web proporcionen plantilles als seus clients com un servei complementari. Altres serveis d'allotjament de formularis ofereixen formularis de contacte gratuïts que un usuari pot instal·lar al seu propi lloc web enganxant el codi del servei a l'HTML del lloc.

## Vegeu també

* CAPTCHA
* XForms
* HTML

## Referències

* ↑ «HTML forms guide». [Consulta: 12 abril 2019].
* ↑ «El text central d'HTML - Formularis HTML: conceptes bàsics». [Consulta: 11 maig 2019].
* ↑ «PHP: Tratar con formularios - Manual». [Consulta: 20 abril 2019].
* ↑ «8. Perl y los formularios». Arxivat de l'original el 2021-09-18. [Consulta: 20 abril 2019].

## Enllaços externs

* Formularis en documents HTML, la pàgina d'especificacions W3C dels formularis en HTML 4.
* Especificació de formularis HTML5 (anglès)
* Viquillibres: Llenguatge de marcatge HyperText / Forms
* Proveu les propietats HTML.