-
-
Index
Inleiding
In deze korte handleiding zal ik je uitleggen hoe je dynamische webpagina's aanmaakt. Indien je denkt dat dit moeilijk is, kijk naar volgende kode:
FUNCTION PBMAIN()
OPEN ENVIRON$("CGI_STDOUT") FOR OUTPUT AS #1
PRINT #1, "<html><head><title>My first program!</title></head>"
PRINT #1, "<body><h1>Hello world !</h1>";
PRINT #1, "The time is " TIME$ " in Belgium";
PRINT #1, "</body></html>"
END FUNCTION
|
Zoals je ziet bestaat het programma uit print-opdrachten. Wat je uitprint is eigenlijk de HTML dat door de browser weergegeven zal worden.
Instaleer de laatste Xitami versie (ik denk dat de latste versie 2.4d9 is), compileer het volgende programma (hello.exe), plaatst het in de cgi-bin directory en je bent klaar!
Xitami werkt zonder enige configuratie (het enige wat je eventueel moet doen is een passwoord definiëren indien je de web based administration wenst te gebruiken.
Na compilatie kan je het helloworld pagina aanroepen op http://localhost/cgi-bin/hello. De gebruikte programmeertaal is van weinig belang, als je maar met bestanden kan werken (Xitami). Voor Aprelium Abyss moet de programeertaal kunnen werken met pipes (standard in en standard out).
Vereisten
- Je moet wat afweten van HTML, aangezien je programma HTML moet aanmaken. Je kan ook met HTML-templates werken waarbij het programma enkel variabele gedeelten aanpast (daarover meer later). Zeker geen boek kopen over Frontpage of Dreamweaver: deze programma's maken websites aan, maar leren je niets over de onderliggende HTML.
- Een standaard-computer is meestal voldoende. Xitami gebruikt heel weinig werkgeheugen (in feite is een webserver maar een veredelde fileserver) en draait probleemloos op een computer met windows 98. Tot in 2008 (toen een nieuwere server geïnstalleerd werd, draaide deze volledige server op windows 98). Indien je windows 2000 of XP gebruikt is de service-versie aangeraden. Deze versie start van zodra je computer opgestart is, maar ook de windows-98 versie kan je instellen om automatisch op te starten.
- Je zal natuurlijk een internet-verbinding nodig hebben. Welk soort en hoe te configureren leg ik je uit op de pagina's over een eigen webserver. Hoewel je heel gemakkelijk een server kan laten draaien op een dynamisch IP, is een vast IP aangeraden van zodra je site aan belangrijkeid wint. Bij het wisselen van server in 2008 ben ik ook overgestapt van een dynamisch IP naar een vast IP.
- Xitami zal alles proberen uit te voeren wat je in de cgi-bin directory plaatst: een batch file, een 16-bits executable (als je nog een oude versie van QuickBasic hebt...) en 32-bits console-programma's. Het belangrijkste is dat het aangeroepen programma een outputfile kan aanmaken.
Abyss van Aprelium dat een recentere webserver is werkt enkel met de efficientere pipes.
Inhoud van deze handleiding
- Lees de handleiding in volgorde. Je zal sommige onderwerpen misschien niet direkt begrijpen, maar alles wordt duidelijker als je verder leest. In de volgende hoofdstuk leg ik je de redenen uit waarom ik voor Xitami en Powerbasic gekozen heb.
- Een volgende pagina behandelt de configuratie van Xitami. Hoewel Xitami direkt na installatie gebruikt kan worden, zijn kleine aanpassingen nodig om het systeem zo doeltreffend mogelijk te maken. Je hebt bijvoorbeeld geen support nodig voor 16-bits executables als je die nooit gaat gebruiken. Bij 16-bits executables maakt Xitami een omgeving aan zodat het DOS-programma optimaal kan werken, maar voor 32-bits executables is dit niet meer nodig. Configuratie is mogelijk via de web interface of door de configuratiebestanden manueel te wijzigen.
- Later worden de uitgebreidere configuratie behandelt, zoals virtuele hosts.
- Bij powerbasic kan je om het even welke versie gebruiken. De console-versie is de gemakkelijkste, ook omdat er geen GUI aangemaakt hoeft te worden. Het is wel nodig dat je programma zo efficient mogelijk geschreven is, zeker als je veel bezoekers verwacht op je site. Bij de klassieke cgi zoals hier besproken wordt het programma aangeroepen iedere keer dat de betreffende pagina gevraagd wordt.
- Het aanbieden van de gegevens aan de bezoekers: voor kleine pagina's kan je de tekst in het programma zelf aanmaken, maar van zodra de output meer complex wordt is het werken met template files aangeraden. Hier worden ook enkele standaard-funkties uitgelegd, zoals het omzetten van tekst in html.
- Hoe gaan we de gegevens dat de bezoeker ingegeven heeft verwerken? Meestal wordt een formulier door de gebruiker ingevuld, en die wordt dan naar de server gestuurd.
- Een volgend onderwerp behandelt het veiligheidsaspekt en het werken met data-bestanden. Hoe zorg ik ervoor dat twee gebruikers eenzelfde gegeven niet terzelfdertijd proberen te wijzigen?
- Er komt een pagina over gzip-kodering: dit wordt niet standaard door Xitami of Aprelium uitgevoerd, maar je kan dit op een eenvoudige manier voorzien voor pagina's met heelwat tekst. gzip kan tekst heel sterk comprimeren (reductie tot minder dan 30% van de originele grootte).
- Een laatste pagina handelt over mij.
Basis
Wanneer je een url (bijvoorbeeld zeepreventorium.org) in je browser ingeeft, dan wordt eerst door de lokale computer de naam omgezet in een adres (dit is de DNS-verwerking). Dan wordt er aan de hand van het bekomen adres de juiste server gecontacteerd. De server heeft een eenvoudige taak:
Lokaliseer het bestand en stuur die door aan de gebruiker
Indien er geen bestand gevraagd wordt (maar wel een directory), stuur 'index.htm' door (of om het even welk bestand dat gedefinieerd werd)
Indien een indexbestand niet bestaat, stuur dan de inhoud van de directory (indien deze funktie ingeschakeld is)
Indien de client iets vraagt dat in een map voor uitvoerbare bestanden staat, voer dan het programma uit, wacht tot ie gedaan is en stuurt het antwoord naar de gebruiker.
Indien de pagina niet bestaat, stuur dan een (aangepast) foutboodschap.
Een webserver is eigenlijk één van de meest eenvoudige internet-programma's.
Kode testen
Een van de problemen met cgi-programma's, is dat je de debugger niet kan gebruiken. Het programma moet vooraf gecompileerd worden, en wordt dan uitgevoerd als de bezoeker de pagina opvraagt.
Het programma kan zelfs meermalen aangeroepen worden, zodat meerdere exemplaren min-of-meer simultaan uitgevoerd worden. Je moet ervoor zorgen dat de bestanden die je gebruikt niet gelockt worden, zodat de andere instanties van het programma dezelfde bestanden eveneens kunnen raadplegen.
Om gemakkelijk te verbeteren en te onderhouden applikaties te schrijven, maak je kleine uitvoerbare bestanden aan. Probeer niet alles in één programma te steken. In een winkelsite, als de klant artikels selecteert, het totaalbedrag opvraagt en dan koopt, maak dan een zelfstandige programma aan voor iedere te doorlopen stap. Ik heb een bestelsysteem geschreven met 147 kleine uitvoerbare bestanden. Bij het bestellen worden de verschillende stappen doorlopen; dus iedere keer wordt een ander bestand aangeroepen.
Index
Individuele landingspage bezoekers: :