Webbsidor och webbservrar



Relevanta dokument
Lite mer om CGI-programmering

Labora&on 7 Syfte med laborationen:

F8 Webbteknologier 1. Dynamiska webbsidor

Databaser på webben. Revision Johan Näsholm, johan@nasholm.com

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Integrerad i egen cup-portal Sid 1

HTML. Introduktion till HyperText Markup Language

Webbserver och HTML-sidor i E1000 KI

Webbprogrammering. Sahand Sadjadee

Labora&on 8 Formulär övningar/uppgi6er

Karlstads Universitet, Datavetenskap 1

F06 A table form Dagens agenda

Dreamweaverskolan, Jump Meny - Formulär - Forms

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

"Referentiell transparens"

Du kan själv följa med i denna steg-för-steg guide i din texteditor.

F02 En första sida. Dagens agenda

Programbeskrivning. Chaos på Web. Version

För att öppna galleriet, ange adressen

F9 Webbteknologier 1. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

JAVASCRIPT. Beteende

Modul 8 Hantering av indata

Modul 6 Webbsäkerhet

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Lathund - webbsidor och filer

3/30/2017 NYHETER I EPISERVER FORMULÄR, TIPS & TRIX HELEN HOPKINSON - NEARU VEM ÄR JAG? - HELEN HOPKINSON

Skriv före adressen och lämna bort www enligt modellen:

Manual för Typo3 version 4.2

Laboration 1 Introduktion till Visual Basic 6.0

Ellibot 1.0. Interaktivmedia Content Management System. Publicera för webben

Användarhandledning för RSV:s Elektroniska brevlåda

Högskolan Dalarna sid 1 av 5 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Webbprogrammering - 725G54 PHP. Foreläsning II

Kort-kort om utdelade användarkonton och datormiljön på NADA

Arbetsuppgift 1: På virtuell maskin med Ubuntuserver, skapa katalog och skapa Dockerfile. Skapa ny katalog i din hemmakatalog, med namnet webbserver.

Mappar och filer för webbsidor

Publicera taltidningen

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Redigera din personliga sida

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Kort-kort om utdelade användarkonton och datormiljön på NADA

Manual 1.0 för att posta nyheter på IF Åland orienterings hemsida (

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Avancerade Webbteknologier

ASP.NET Web Forms. Copyright Mahmud Al Hakim Vad är Web Forms?

Statistik från webbplatser

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Att hämta organisationers publikationsposter ur DiVA

teknisk manual Direktbetalning handelsbanken.se/e-handel

HTML & webbteknik. Introduktion till HTML. Formatering. Struktur HTML. Uppdelning. Hur man skapar hemsidor. Öppen standard W3C. Plattformsoberoende

I den här labben ska vi använda oss av en trevlig nyhet i HTML5: Local Storage, för att implementera en sorts lokal gästbok.

Laboration 6 Formulär och stränghantering övningar/uppgifter

Webbservrar, severskript & webbproduktion

Nya webbservern Dvwebb.mah.se

Sidrenderingsmodellen

Zimplit CMS Manual. Introduktion. Generell Information

Labora&on 2 HTML och validering övningar/uppgi:er

DynaPahlm är användbart på många olika typer av webbplatser. Denna handbok ger dig tips och vägledning till hur du bäst använder DynaPahlm

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Manual för din hemsida

En användarmanual för att publicera Y-bladet på webben

Guide. Webbsidor i Studentportalen. Innehåll. Uppdaterad:

Instruktioner. Innehåll: 1. Vad är Kimsoft Control (SIDA 2) 3. Hem (SIDA 2)

Dagens föreläsningar

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

Ansökan om föreningsbidrag och kulturstöd via webben. Kundens ex. Gäller från

Innehåll. PHP Grundkurs. Introduktion till PHP. Kurslitteratur. Webbserver. Lite historik. PHP Grundkurs 1

! HTML Formulär! JavaScript! Syntax! Events! DOM. ! URL variabler i en query string (get) ! HTTP post request (post)

Lektion 5 HTML, CSS, PHP och MySQL

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

WP-Edit. Robin Larsson Martin Davik. Examensarbete, grundnivå, 15 hp Datavetenskap Internetteknologprogrammet

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

Lathund för att publicera på SAKs webbplats för användare i lokalföreningar.

Manual för Typo3 version 4.04

Registrera konstnärlig output i DiVA. Uppdaterad

GPDR personuppgifter i Artologik EZbooking

Statistik från webbplatser

AssiML. Användarbeskrivning

Formulär i Sitecore. Innehåll. Inlogg sitecore:

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

Manual för publicering av studentuppsats/examensarbete i DiVA Uppdaterad

Hur man lägger in saker på hemsidan En kortfattad handbok om något som inte är så himla svårt

Dagens föreläsning. Ställa in Apache för Python. Skapa ett Pythonscript. Skapa en statisk sida. Lagerdesign för webbkommunikation

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

NYHETER Skapa nyheten... 2 Välj Ny och Nyhet... 2 Skriv in nyhetens rubrik... 2 Nyheten hamnar överst i nyhetslistan

Manual: Skapa egna ansökningsformulär

Manual HSB Webb brf Den i särklass vanligaste är Standardartikeln så den beskrivs i detalj nedan.

Ansökan om stöd till kulturverksamhet via webben Gäller från

Underhåll av

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

1. Gå till redigeringsläge i Episerver, klicka på den sida som du vill ha ett formulär på. 2. Klicka på fliken Formulär.

Om manualen inte räcker till vänligen kontakta Madeleine Rietz på ITavdelningens supportmejl

Manual för webbredaktörer. Februari 2013

Labora&on 1 Variabler och beräkningar övningar/uppgi9er

Transkript:

Webbsidor och webbservrar Server HTTP-protokollet Dokument (t.ex. HTML kod) Klient URL (t.ex. länk) Normal funktion hos webben: Användaren klickar på länk eller anger URL på annat sätt. Servern lokaliserar ett dokument (oftast med HTML-kod) och skickar tillbaka till klienten. Nackdel: Dokumenten är fasta. Fungerar inte om man vill använda webben som gränsyta mot något program på servern, t.ex. biljettbokningssystem.

Common Gateway Interface (CGI) Server HTTP-protokollet CGIprogram Programkörning Utdata från programmet (t.ex. HTML-kod) Klient URL+datafält Användaren skickar en URL till servern som anger ett program som skall köras. Webbsidan kan innehålla datafält (knappar, textfält etc.) vars innehåll skickas med till programmet. Servern lokaliserar programmet och kör det. Programmet kan få medskickade data från servern. Programmet skapar en ny webbsida som skickas tillbaka till klienten. Data hämtas med speciella funktioner. Webbsidan skickas tillbaka genom att skriva ut den (på stdout). Fördel: CGI-programmet kan utföra vilken upgift som helst. Ofta är CGI-program gränsyta mot något bakomliggande system banksystem, biljettbokning etc.

CGI-programmets utdata CGI-programmet kan skapa webbsidor, bilder och andra typer av data som webbläsaren kan tolka. Utdata måste börja med en rad som beskriver typen av data följt av en blank rad. Exempel: Content-type: text/html Obligatoriska rader <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <HTML> <HEAD> <TITLE>Exempel</TITLE> <META http-equiv="content-type" content="text/html; charset=iso-8859-1"> </HEAD> <BODY> Hej, världen </BODY> </HTML> Första raden måste se ut exakt så utom att text/html kan bytas ut mot annat t.ex. text/plain, image/gif...)

CGI-programmets indata CGI-programmet "anropas" från en webbsida med hjälp av formulär HTML-konstruktioner för låta användaren lämna information. <form method=get action="http://user.it.uu.se/cgi bin/cgiwrap /lhe/test.cgi"> <p>ett textfält: <input type=text name=f1 value=""></p> <p>tryck här när du är klar: <input type=submit value="ok"></p> </form> När knappen trycks in anropas CGI-programmet och den information som användaren (ev.) skrivit in i textfältet skickas med.

Mer om formulär Alla formulär måste börja med HTML-taggen <form> och sluta med </form>. <form method=metod action=url-till-cgi-prog> metod kan vara GET eller POST. De anger olika sätt att överföra information till CGI-programmet. GET har fördelen att informationen är synlig i URL-en. POST har fördelen att större mängder information kan överföras. I övrigt är de lika. input-taggen definierar ett datafält eller en knapp. <input type=typ name=namn value=värde...> typ kan vara bl.a.: text Ett fält där man kan skriva in text. password Som text, men texten visas inte. hidden Ett textfält som överhuvudtaget inte syns. submit En knapp som anropar CGI-programmet reset En knapp som återställer initialvärden på fälten Det finns också menyer, kryssrutor, m.m. namn är ett namn på fältet (visas inte) används ej på submit/reset. värde är ett initialvärde för fältet (etikett på submit/reset). För textfält kan man också ange size=kolumner eller size=kolumner,rader. Detta anger textfältets storlek. För stora textmängder finns specialtaggen <textarea name=namn rows=rader cols=kolumner> värde </textarea> rader/kolumner anger storleken på textfältet.

Biblioteket Mosmlcgi Moscow ML har ett bibliotek Mosmlcgi som kan användas av CGI-program för att hämta data från webbformulär. cgi_field_string(f) :string->string option POST: SOME(s) om f är namnet på ett fält i formuläret som anropade programmet, annars NONE. s är en sträng med innehållet i fältet. EXAMPLE: cgi_field_string("f1") = SOME "Hej" ifall det finns ett fält f1 som innehåller texten "Hej". cgi_field_string("f2") = NONE om det inte finns ett fält f2. cgi_field_integer(f, d) : string*int->int POST: i om fältet f finns och innehållet kan tolkas som heltalet i. Talet d annars. EXAMPLE: cgi_field_integer("f1",~1) = 12 ifall det finns ett fält f1 som innehåller texten "12". cgi_field_integer("f2",~1) = ~1 ifall det finns ett fält f2 som innehåller texten "hej".

CGI-program i ML. ML program måste kompileras för att få körbara filer som fungerar utan användning av ML-systemet. Under UNIX kan man ge kommandot mosmlc MLprogramfil -o körbarfil T.ex.: mosmlc test.sml -o test.cgi mosmlc accepterar bara deklarationer (open, fun, val etc.) och inte uttryck. load behövs inte bibliotek laddas automatiskt! Vid interaktiv körning av ML startar man programmet genom att anropa huvudfunktionen. I mosmlc får man använda ett trick. Avsluta filen med: val _ = uttryck; T.ex. val _ = mainfunction(); CGI-programmet måste sedan läggas där webbservern hittar den. På institutionen för IT är det katalogen public_html/cgi-bin I respektive användares toppnivåkatalog. Programmet körs sedan via URLen: http://user.it.uu.se/cgi bin/cgiwrap/användar e/körbarfil T.ex. http://user.it.uu.se/cgi bin/cgiwrap/lhe/tes t.cgi

Spara data mellan körning av CGI-program CGI-program anropas ifrån en webbsida, körs och skapar en ny webbsida och avslutas därefter. Oftast vill man kunna anropa CGI-programmet flera gånger och spara information mellan anropen. Det finns två sätt: Spara på en fil (lämpligt för chattexten i webchatten) Spara på ett fält (t.ex. hidden) i den skapade webbsidan (lämpligt för användarnamn/lösenord i webbchatten). Om man sparar genom att skriva på fil måste man tänka på att CGI-programmet körs som om man själv var inloggad och skriver och läser filer i ens egen katalog med ens egna rättigheter. Detta kan leda till säkerhetsproblem (t.ex. om användaren kan påverka filnamnen).

Ett exempel: kalkylator CGI-programmet anropas ifrån en webbsida, körs och skapar en ny webbsida varifrån man kan anropa programmet igen. (Klick)

Startsidan för kalkylatorn: (calc.html) <!DOCTYPE HTML PUBLIC " //W3C//DTD HTML 4.01 Transitiona l//en" "http://www.w3.org/tr/html4/loose.dtd"> <HTML> <HEAD> <TITLE>Kalkylator</TITLE> <META http equiv="content Type" content="text/html; char set=iso-8859-1"> </HEAD> <BODY> <form method=post action="http://user.it.uu.se/cgibin/cgiwrap/lhe/calc.cgi"> Första operand: <input type=text name=a value="0"><br> Operator: <input type=text name=op value=""><br> Andra operand: <input type=text name=b value=""><br> <input type=submit value="beräkna"> </form> </BODY> </HTML>

ML-programmet för kalkylatorn (calc.sml): Tänk på att citationstecken (") och bakåtstreck (\) måste föregås av bakåtstreck i ML-strängar (\") och (\\) open Mosmlcgi; fun calcresult(a,"+",b) = a+b calcresult(a,"-",b) = a-b calcresult(a,"*",b) = a*b calcresult(a,"/",b) = a div b calcresult(a,_, b) = a; fun calcform(a,opnd,b) = "<form method=post action=\"http://user.it.uu.se/cgi b in/cgiwrap/lhe/calc.cgi\">\n" ^ "Första operand: <input type=text name=a value=\"" ^ Int.toString(calcresult(a,getOpt(opnd,""),b)) ^ "\"><br>\n" ^ "Operator: <input type=text name=op value=\"\"><br>\n" ^ "Andra operand: <input type=text name=b value=\"\"><br >\n" ^ "<input type=submit value=\"beräkna\">\n" ^ "</form>\n" fun calc() = (print("content type: text/html\n\n"); print("<!doctype HTML PUBLIC \" //W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/tr/html4/loose.dt d\">\n"); print("<html>\n<head>\n<title>kalkylator</title>\n"); print("<meta http equiv=\"content Type\" content=\"te xt/html; charset=iso 8859 1\">\n</HEAD>\n"); print("<body>\n"); print(calcform(cgi_field_integer("a",0), cgi_field_string("op"), cgi_field_integer("b",0))); print("</body>\n</html>\n")); val _=calc();

Felsökningstips: CGI-program kan vara svåra att felsöka eftersom de inte går att köra interaktivt. Tips 1: Dela upp programmet i en webbdel och en funktionsdel där den senare inte alls utnyttjar några CGIfunktioner. Testa och felsök funktionsdelen interaktivt först. Tips 2: Om du använt open Mosmlcgi; för att slippa skriva Mosmlcgi. före cgi-funktionerna, så kan du definiera egna funktioner cgi_field_string och cgi_field_integer som antingen ger tillbaka konstanta värden eller läser från terminalen. Då kan du testa programmet interaktivt. (Du måste definiera dem efter open Mosmlcgi; eller ta bort denna deklaration.) I kalkylatorfallet kan du definiera: fun cgi_field_string( op ) = SOME ( * ) cgi_field_string(_) = NONE fun cgi_field_integer( a,_) = 2 cgi_field_integer( b,_) = 3 cgi_field_integer(_, x) = x så kommer kalkylatorn att försöka räkna ut 2*3 utan att någon webbkommunikation är inblandad. För att prova andra testfall ändrar du helt enkelt på definitionerna.