The original and still most popular use for forms is in conjunction with CGI (Common Gateway Interface). In the CGI way of doing things, the data the user enters is sent to the web server, where a program processes the data and returns the results. In other words, all the data is processed on the server, not in the web browser.
Let's expand our earlier example to show how to incorporate CGI:
<FORM ACTION="/cgi-bin/html/mycgi.pl"> favorite color: <INPUT name="favecolor"> <INPUT TYPE=SUBMIT VALUE="Submit"> </FORM>
which gives us
Here's what the new pieces mean:
<FORM ACTION="/cgi-bin/html/mycgi.pl">
ACTIONACTION
<INPUT name="favecolor">
NAMENAME
<INPUT TYPE=SUBMIT VALUE="Submit">
<INPUT ...>
That's the basic set up for a CGI form, but what happens after the user presses Submit? Consider, for example, a simple newsletter subscription form. Here's the chain of events when the user hits "Submit":
So there are three pieces to the CGI process: the form on your web page, the web server, and the CGI program. This guide deals with the first part: how to use HTML to make a form. Your web administrator handles the web server, and for a good guide on how to write CGIs, visit some of the resources in the CGI > Tutorials category at the Google Directory.
Technically speaking there is no such thing as "a CGI". "CGI" is a standard protocol, not an actual implementation. However, it has become common to refer to a program which uses the CGI standard as "a CGI", and we will follow that custom here.
One of the reasons CGI is so popular is that the CGI program can be written in just about any programming language: C, C++, Perl (the most popular language for CGI), Visual Basic, etc. CGI was designed to allow great flexibility in processing the form data, while still allowing the results to be returned as HTML (or other formats, but HTML is the most popular).