weballey logo
 
left forms - form backnext right
homesearchsite mape-mail
intro
text
textarea
buttons
image
< form >
e-mail form
checkbox
radio
select
password
hidden
layout
cgi
tags
slot
 

    Even terug naar de FORM tag. Deze heeft namelijk nog een aantal attributen. Het belangrijkste is ACTION, dat aangeeft WAT met de inhoud van het formulier moet gebeuren. Een andere is METHOD, die aangeeft HOE een formulier verzonden moet worden. Ook interessant is TARGET, als je het resultaat ine een ander frame of venster wilt laten zien.

<FORM ACTION="forms.cgi">

Action
    Het ACTION attribuut vertelt de browser wat te doen met de gegevens. Veelal worden deze doorgegeven aan een CGI programma. De webserver geeft de data dooor aan een programma, op de server, maar naast de eigenlijke webserver. Vaak is dit een of andere database. Voor nu zal ik je laten zien hoe je een eenvoudig e-mail formulier kunt maken.

<FORM ACTION="mailto:foo@bar.com">

    De meeste browsers zullen dit accepteren, en de inhoud van het formulier verzenden naar het aangegeven e-mail adres. Op de volgende pagina vind je de complete html code voor zo'n formulier, en hoe dat formulier er uit ziet.

<FORM METHOD="GET">

Method
    Het METHOT attribuut vertelt de browser hoe het de gegevens moet verzenden. De standaard methode is GET. Dit vertaalt de data naar een url, vergelijkbaar met hoe je een webpagina opvraagt. De GET methode wordt veel gebruikt door zoekmachines, kijk maar eens naar de urls, de volgende keer dat je er een gebruikt. Het resultaat is vergelijkbaar met het volgende.

http://www.site.nl/programma.cgi?naam=waarde&naam=waarde

URL encoding
    Deze url ziet er op het eerste gezicht nogal ingewikkeld uit. Maar het stelt echt niet zoveel voor. Laten we de dingen eerst eens wat opsplitsen. Het gedeelte links van het vraagteken is een gewone url. Het vraagteken scheidt de url van de gegevens. Na het vraagteken zie je naam/waarde paren, gescheiden door een ampersand (&). De paren bevatten de gegevens uit het formulier. De namen zijn vastgelegd in de formulier tags, zals input en textarea. Wat je hebt ingevuld in het formulier, komt terecht in de waarden. Hiertussen staat een "is gelijk" teken (=). Niets is zo moeilijk als het lijkt.
    Sommige tekens worden vertaalt naar de corresponderende hexadecimale ASCII waarde. Je ziet dit als bijvoorbeeld %2E. Een spatie wordt omgezet naar een plus teken (+). Een plus teken wordt omgezet naar %2B, anders zou dat weer problemen geven. Dit proces wordt url encoding genoemd. De data worden omgezet naar een url, met veilige tekens. Sommige tekens geven problemen met de werking van de url zelf. Een spatie zou de url opdelen, waarbij alleen iets met het gedeelte links ervan gedaan wordt. Het betrokken cgi programma vertaalt de tekens terug naar hun oorspronkelijke waarden.

<FORM ENCTYPE="text/plain">

    Een formulier wordt dus gewoonlijk url-encoded verzonden. As je een ENCODE attribuut gebruikt, kunnen de gegevens oon ongecodeerd verzonden worden. Het resultaat is beter leesbaar, als je een e-mail formulier gebruikt, als op de volgende pagina. Gebruik dit alleen bij een mailto: formulier, een cgi script zou hier moeite mee kunnen hebben. Oudere browsers kunnen er ook problemen mee hebben.

<FORM METHOD="POST">

    De POST methode werkt iets anders dan GET. In dat geval is de url precies wat aangegeven is in de ACTION. De data worden apart verzonden, na het aanroepen van de url. Dit geeft dus ook een cleanere url in de browser. Je ziet daar geen data, alleen de url. Programmeurs geven vaak de voorkeur aan deze methode. En deze methode is ook nodig voor ons e-mail formulier.

    Een laatste puzzel. Wat gebeurt er als je geen attributen gebruikt in de FORM tag? Het formulier wordt verzonden naar zijn eigen url. Wat heeft dat voor zin, denk je wellicht. Formulieren worden vaak gegenereerd door een (cgi) programma. Ditzelfde programma verwerkt dan ook de output van het formulier. Zijn er fouten, dan kunnen deze in het formulier aangegeven worden, op geschikte plaatsen.

<FORM ACTION="/forms/forms.cgi">

Je eigen formulieren testen
    Je kunt je eigen formulieren testen met de url hierboven. Ook de meeste formulieren in deze tutorial zijn aan een simpel cgi programma verbonden (forms.cgi), dat alleen de verzonden data weergeeft. Je ziet verder alle gegevens die altijd verzonden worden. Je mag het gebruiken om de formulieren te testen, die je maakt met deze tutorial.

bottom  
left Copyright © Gerben Hoekstra - Alle rechten voorbehouden backnext right