Webbprogrammering grunder

Relevanta dokument
Webbprogrammering grunder

Webbaserade informationssystem med PHP och databaser

Webbaserade informationssystem med PHP och databaser

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP

Webbservrar, severskript & webbproduktion

Webbaserade informationssystem med PHP och databaser

Datakommunika,on på Internet

Lite mer om CGI-programmering

Webbserver och HTML-sidor i E1000 KI

Webbprogrammering. Sahand Sadjadee

Nätverk och Java, grunder Föreläsning 0: 0: Introduktion till Internet

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

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

Datakommunika,on på Internet

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Statistik från webbplatser

Nätverk grunder Föreläsning 1: 1: Introduktion till Internet

Modul 6 Webbsäkerhet

Programbeskrivning. Chaos på Web. Version

Arbetsmaterial HTML pass 1 - Grunder

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

TNMK30 - Elektronisk publicering

Administration: Grundläggande internetprogrammering

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

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

Labora&on 7 Syfte med laborationen:

Avancerade Webbteknologier

Christer Scheja TAC AB

PHP. Dynamiska webbsidor

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Internet. Internet hur kom det till? Internets framväxt. Ett hierarkiskt uppbyggt telenät Kretskopplat/circuit switching

Webbprogrammering 725G54

Språk för webben introduk4on 4ll HTML

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Idag. Webben och HTML. Webbens funk3on. URL och websidor. Moment F om webben och HTML startar nu

Mattias Wiggberg 1. Orientera på Internet. IP-adress. IP-adresserna räcker inte... Mer om IP-adresser

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Grundläggande datavetenskap, 4p

Hyperlänkar. I HTML skapar man en hyperlänk med taggen <a> </a>, som är en förkortning av ordet ankare, på (engelska anchor).

Karlstads Universitet, Datavetenskap 1

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

Hur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka

Gratis support via telefon och e post ingår i tjänsten. Kontaktuppgifterna finns längst ner i dokumentet.

PHP. TNMK30 - Elektronisk publicering

Datainsamling över Internet

Användarhandledning Version 1.2

Nya webbservern Dvwebb.mah.se

Skärmbilden i Netscape Navigator

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

Statistik från webbplatser

Insamlingsverktyg - teknisk beskrivning av metadataformuläret

F8 Webbteknologier 1. Dynamiska webbsidor

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

IP-baserade program. Telnet

IT för personligt arbete F2

Steg 5 Webbsidor One.com och OpenOffice Writer Mac OS X

Utkast/Version (8) Användarhandledning - inrapportering maskin-till-maskin

Filbindningar. Mike McBride Översättare: Stefan Asserhäll

Introduktion till MySQL

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Uniform Resource Locator (URL) JavaServer Pages - JSP. Webbklienter. Webbserver. Hypertext Transfer Protocol (HTTP) HTTP Request

Introduk+on +ll programmering i JavaScript

Introduktion till programmering

Webbsidor och webbservrar

NSL Manager. Handbok för nätverksadministratörer

ITK:P2 F1. Hemsidor med HTML HTML. FTP, HTTP, HTML, XML och XHTML

LVDB i GEOSECMA. Innehåll. Inledning. Produkt: GEOSECMA Modul: LVDB Skapad för Version: Uppdaterad:

Innehålls förteckning

ANVÄNDAR-GUIDE för Bränneriets LAN

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

HTML och CSS. Eric Elfving Institutionen för Datavetenskap (IDA)

CMS. - Content management system

E12 "Evil is going on"

F02 En första sida. Dagens agenda

Grundläggande nätverksteknik. F2: Kapitel 2 och 3

Föreläsning 2. Operativsystem och programmering

Server-kod. TDDD80 Mobila och sociala applikationer

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

Content Management System. Publiceringssystem

Elektronisk publicering TNMK30

Datasäkerhet och integritet

Skicka och hämta filer med automatik till och från Försäkringskassan

Tentamen i Datorteknik och - kommunikation, 2D1522/4K1522. Läs detta innan du börjar:

Webbpublicering. Teknikintroduktion 1 Jody Foo (jodfo@ida.liu.se)

Komma igång med Qlikview

Dagens föreläsningar

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

INSTALLATION AV KLIENT

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

Modul 8 Hantering av indata

TCP/IP och Internetadressering

LEX INSTRUKTION - LEXTALK

lokalnytt.se Manual kundadministration

Inneh ll. CGI och CGI-programmering. Common Gateway Interface. Common Gateway Interface. Mera dynamisk WWW. Kompletterande l sningar

Innehåll. Dokumentet gäller från och med version

Karlstads universitet Institutionen för Informationsteknologi Datavetenskap

Zimplit CMS Manual. Introduktion. Generell Information

Webbens grundbegrepp. Introduktion till programmering. Ytterligare exempel. Exempel på webbsida. Föreläsning 5

Transkript:

Dagens föreläsning Webbprogrammering grunder 2D1522 Datorteknik och -kommunikation 2D2051 Databasteknik och datorkomunikation http://www.nada.kth.se/kurser/kth/2d1522/ http://www.nada.kth.se/kurser/kth/2d2051/ Syfte Ge grundläggande förståelse för hur enkla system för dynamisk webpublicering är uppbyggda, för att i senare skeden kunna göra mer avancerade, praktiska tillämpningar. Mål Förstå hur olika typer av data skickas över internet med http-protokollet. Förstå hur program, såsom webläsare, vet hur de ska hantera mottagna filer med MIME. Veta hur parametrar kan skickas mellan webläsare och webserver Kunna göra enkla, dynamiska websidor med cgi-script och senare med PHP. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 1 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 2 Dagens innehåll Repetition xhtml Kort repetition av html Hur datatyp identifieras med MIME Hur data överförs med HTTP Hur dynamiskt webinnehåll kan skapas med cgiscript Hur variabelvärden överförs med formulär/cgi Hur dynamiskt innehåll kan skapas med PHP xhtml är ett märkspråk för att beskriva websidors struktur. Består av tags som märker upp olika delar av ett dokument. Viktiga delar är: Metainformation och innehåll (<head></head>, <body></body) stycken, rubriker etc. (<p>stycke</p>, <h1>rubrik</h1>) Länkar (<a href= http://www.kth.se >Till KTH</a>) Bilder (<img src= bilden.gif />) Hur innehållet sedan tolkas är upp till webläsaren 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 3 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 4

Exempel - XHTML <html> <head> <title>en websida</title> </head> <body> <p> <a href="http://www.kth.se">kth</a> <img src="/kth/bilder/nada.gif" alt="nada"/> </p> </body> </html> Inline-resurser En html-sida kan innehålla två typer av element. Vanliga element (<p>ett stycke</p>) Inlineelement (<img src= http://www.kth.se/kth.gif />) Inline-element innehåller länkar till andra resurser (t.ex. filer), som ska ska hämtas utan att en användare behöver interagera, och på något sätt hanteras av webläsaren. Vanligast är bilder, men även ljud, filmer och animationer kan användas. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 5 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 6 MIME Hantering av resurser Kort repetition av html Hur datatyp identifieras med MIME Hur data överförs med HTTP Hur dynamiskt webinnehåll kan skapas med cgiscript Hur variabelvärden överförs med formulär/cgi Hur dynamiskt innehåll kan skapas med PHP Bilder kan vara kodade på olika sätt (gif, jpg, png...) Samma gäller ljud, video etc. Några format kan hanteras av webläsaren själv, några andra kräver plug-ins, ytterligare andra hanteras av externa applikationer. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 7 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 8

I inställningarna för webläsare kan man bestämma hur en viss filtyp ska hanteras. Hanteras av en plugin...... eller av ett externt program Ofta kan webläsaren gissa vilken kodning en fil har baserat på filens ändelse. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 9 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 10 Flera filtyper med samma ändelse Ibland är dock filen skapad av ett program, t.ex. gulasidornas karttjänst. Då ger inte filändelsen någon information om filtypen <img src="map.asp?r=3465&mapsymbol=star"/> Antalet treställiga förkortningar är dessutom begränsat vilket kan leda till att en ändelse inte entydigt kan användas för att avgöra filtypen Exempel.rpm - Red Hat package manager eller.rpm - Real Player Media 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 11 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 12

Överlåt ansvaret på servern MIME-typer Den som publicerar en resurs på internet bör dock (rimligen) veta filket filformat resursen har. Överlåt därför ansvaret att avgöra filformatet till webservern istället för webklienten. Låt sedan varje överföring av en resurs (fil) inte enbart innehålla resursen i sig, utan även filtypen. Den entydiga bestämningen av filformat görs med s.k. MIME-typer (Multi purpose Internet Mail Extensions) Anges på formen huvudgrupp/filformat t.ex video/mpeg, text/html eller image/gif 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 13 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 14 Hur känner webservern till vilken MIME-typ en fil har? mime.types I de flesta fall gör webservern en enkel tabelluppslagning av filändelsen för att bestämma MIME-typ Filnamnet xxx.gif ger MIME-typen image/gif Detta gör att en viss webserver inte kan avgöra om en fil med ändelsen. rpm är Real Player Media eller Red Hat Package Manager Macintoshdatorer (Mac OS <= 9) har dock ett mer flexibelt sätt att avgöra filtyper, men i webserversammanhang är det en försvinnande liten plattform. På en Apache-webserver lagras informationen i filen mime.types 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 15 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 16

Överföringar med HTTP Kort repetition av html Hur datatyp identifieras med MIME Hur data överförs med HTTP Hur dynamiskt webinnehåll kan skapas med cgiscript Hur variabelvärden överförs med formulär/cgi Hur dynamiskt innehåll kan skapas med PHP http Själva överföringen av resurser på webben sker med http - HyperText Transfer Protocol. Ett protokoll bland flera, t.ex. smtp, pop etc. Ni har testat smtp och http på laboration 1. Mime-typen Själva resursen 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 17 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 18 Vad är http Ett nätverksprotokoll för att överföra filer och annan data, generellt kallat resurser. Använder i stort sett alltid TCP/IP-sockets. En http-transaktion kräver en http-klient (browser) och en http-server (webserver). Använder normalt port 80, men kan använda vilken port som helst. Resurser En resurs behöver inte nödvändigtvis vara en fil, utan kan vara vad som helst som kan pekas ut av en URL (Uniform Resource Locator) Exempel: Filer, dynamiskt genererade bilder, resultat genererade efter att ha fyllt i ett formulär. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 19 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 20

http-transaktioner Inledande rad i en request Klienten öppnar en förbindelse med servern. Klienten skickar ett request message till servern Servern skickar ett response message, oftast innehållande resursen Servern stänger förbindelsen Request/response En inledande rad noll eller flera header-rader en tom rad eventuellt en meddelandekropp, som exemepvis själva resursen GET /~inge/gurka.txt HTTP/1.0 GET är metodnamnet. Andra vanliga metoder är POST och HEAD /~inge/gurka.txt är sökvägen till resursen HTTP/1.0 är versionen av HTTP som används 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 21 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 22 Inledande rad i en response Statuskoder HTTP/1.0 200 OK HTTP/1.0 är HTTP-versionen i svaret 200 är en statuskod OK är en klartextsträng som beskriver statuskoden. Vanliga varianter man ofta råkar ut för är HTTP/1.0 404 Not Found HTTP/1.0 500 Internal Server Error Statuskoder är tre-siffriga, där första siffran indikerar huvudklass på status 1xx är ett informativt meddelande 2xx visar att förfrågan lyckades 3xx omdirigerar förfrågan till en annan resurs 4xx betyder fel hos klienten 5xx betyder fel hos servern 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 23 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 24

http-headers MIME och HTTP Både i http-requests och http-responses går det att lägga till diverse header-information. Exempel för request är User-Agent: Mozilla/5.0 From: bjornh@kth.se Exempel för responses är Server: Apache/1.3 Last-Modified: Thu, 02 May 2002 08:59:59 GMT Om en response innehåller en meddelandekropp, t.ex. själva innehållet i en fil, bör en header-rad som beskriver MIME-typen finnas med. Att rekommendera är även längden av meddelandekroppen ifall den är känd. Content-Type: text/html Content-Length: 36 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 25 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 26 http via telnet Öppna förbindelse till http-servern Inledande request-rad Replyheaders Data Statuskod Requestheader Blankrad Blankrad Spår av http-transaktioner Man väljer ofta att logga vissa delar av transaktionerna i loggfiler. Dessa kan bl.a. användas för statistik. agent_log loggar vilken klient som använts (IE, Netscape etc) access_log loggar vilka resurser som hämtats och statuskoder error_log loggar eventuella fel 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 27 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 28

Använda informationen för att påverka innehållet Informationen som skickas från klient till server kan användas för att påverka vilket innehåll som ska skickas tillbaka till klienten. versiontracker.com och download.com väljer startsida beroende på om klienten är en mac/pc/linux etc. Språkspecifika sidor kan väljas genom att se vilket språk webläsaren är inställd på Om filen banan.html efterfrågas kommer i första hand filen banan.html.se returneras om webläsaren är inställd på Svenska och filen banan.html.en returneras om den är inställd på engelska. Exempel på tillgänglig information 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 29 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 30 Skillnader http/1.0 http/1.1 Sammanfattning av vanlig http-kommunikation http version 1.1 används mest idag. Det finns framför allt två viktiga skillnader En klient-header med namn Host krävs nu som anger hostnamnet på resursen man hämtar. Behövs för att kunna köra webhotell, med flera domäner på samma IP-adress. Keep-alive-connections tillåts, dvs förbindelsen behöver inte kopplas ner mellan varje hämtning av resurser Klienten öppnar en TCP/IP-socket mot webservern. Klienten skickar en begäran att få en resurs + olika frivilliga eller obligatoriska headers. Webservern hittar resursen, och bestämmer bl.a. dess längd och dess MIME-typ. Webservern skickar tillbaka en statuskod, olika reply-headers såsom MIME-typ samt själva resursen. Webservern stänger förbindelsen. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 31 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 32

Dynamiskt innehåll med cgi-script Dynamiskt innehåll Kort repetition av html Hur datatyp identifieras med MIME Hur data överförs med HTTP Hur dynamiskt webinnehåll kan skapas med cgiscript Hur variabelvärden överförs med formulär/cgi Hur dynamiskt innehåll kan skapas med PHP Hittills har vi endast arbetat med statiska, ickeföränderliga resurser såsom filer. Ofta måste dock resurserna skapas dynamiskt, vid anropstillfället Sökningar i sökmotorer Shopping på webben 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 33 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 34 Innehåll skapat av program Enkelt exempel (shellscript) html-filer är mycket enkelt uppbyggda Enkelt skriva ett program som genererar en html-fil. Sådana program kallas ofta för cgi-script Kan skrivas i godtyckligt programmeringsspråk. Själva html-koden genereras med print-satser eller motsvarande. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 35 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 36

MIME-typ och cgi Speciella krav för cgi Eftersom ett program kan generera alla tänkbara filformat (excel, html, gif-bilder), måste programmet självt ange vilken MIME-typ innehållet som genereras har. Programmet har ansvar för att generera hela http-headern, exklusive statussignalen men inklusive blankraden MIME-typ Blankrad Innehåll Dynamiskt genererat Skillnaden mellan statiska resurser och cgi-script är alltså att scripten exekveras och resultatet skickas tillbaka, inte själva scriptet i sig. Oftast måste cgi-script ligga i speciella kataloger, pga säkerhetsaspekter. Oftas heter katalogerna /cgi-bin/ Det går dock att koppla vissa ändelser så att t.ex. alla filer med ändelsen.cgi eller.pl exekveras, oavsett var de ligger. Viktigt att, på en unix-dator, aktivera exekveringsflaggan för others (>chmod 755 filnamn, eller motsvarande för AFS) 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 37 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 38 Överföra variabelvärden Överföra variabler Kort repetition av html Hur datatyp identifieras med MIME Hur data överförs med HTTP Hur dynamiskt webinnehåll kan skapas med cgiscript Hur variabelvärden överförs med formulär/cgi Hur dynamiskt innehåll kan skapas med PHP I exemplet ändras endast datumet, det finns inga andra möjligheter att påverka resultatet. Det vore önskvärt att kunna skicka med ett antal parametrar, som sedan kan användas för att styra resultatet, t.ex. söksträngar för sökmotorer. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 39 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 40

Formulär Ett enkelt formulär I html kan interaktion med användaren framför allt skapas med hjälp av formulär. Tillåter enkla parametrar att skickas Av typen variabelnamn=variabelvärde Variablernas namn och värden kan sedan överföras till scriptet på serversidan, som kan anpassa sitt beteende därefter. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 41 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 42 GET - URL-encoding Samma exempel via telnet När metoden GET används kodas variablerna in i själva URLen. Värdena lagras i variabeln QUERY_STRING 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 43 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 44

URL-encoding Vissa steg måste dock vidtagas för att koda variabler-värden så de kan skickas via en URL. Konvertera konstiga, icke-alfanumeriska och icke-amerikanska tecken till %xx där xx är tecknets ascii-värde skrivet hexadecimalt. Ändra mellanslag till + bind ihop variabelnamn-variabelvärde med = Separera variabler med & Inled med ett? direkt efter scriptnamnet Exempel: http://localhost/cgi-bin/test-cgi?banan=bj%f6rn&bilar=volvo Metoden POST Det finns även en metod vid namn POST som liknar GET Variablerna skickas i body-delen av förfrågan. Filer kan skickas med (t.ex. bifoga attachments i hotmail). En effekt blir att variabelnamn och variabelvärden inte syns i URLen, samt att variablerna inte längre lagras i environmentvariabeln QUERY_STRING 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 45 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 46 Samma exempel fast med POST Samma exempel via telnet Observera Content-Length som måste vara med och som innehåller längden på bodydelen 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 47 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 48

Metoden HEAD Exempel på HEAD via telnet Den sista vanligt använda metoden är HEAD. Den används om man ENDAST är intresserad av headerdelen av svaret, dvs är ointresserad av själva datadelen. Kan vara användbart t.ex. för att se ifall en resurs har ändrats sedan en tidigare tidpunkt. Om så inte är fallet behöver man inte ladda ner resursen ifråga. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 49 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 50 GET, POST och HEAD Programspråkspecifika bindningar för cgi GET används vid all hämtning av statiska resurser, och ibland för dynamiska resurser. Förfrågningar av dynamiska resurser kan lagras som bokmärken, eftersom indata kodas i URLen POST används ibland för dynamiska resurser och alltid när filer ska bifogas. HEAD används när klienten är ointresserad av innehållet i resursen, men däremot är intresserad av metadata gällande resursen. För många programspråk finns idag paket som kan användas för att göra det enklare att komma åt cgi-variabler. Speciellt arbetet att dela upp en QUERY_STRING i dess variabelnamn/variabelvärde-par är en trevlig funktion. Vanligtvis kan man dock, om inte annat, komma åt själva råvariablerna, t.ex. i ett shell-script echo $QUERY_STRING 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 51 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 52

Vanliga cgi-scriptspråk Vanligaste fallgroparna Några språk som ofta används för cgi-script är: Perl Python C/C++ Ingen av dessa ska vi dock gå igenom i denna kurs De särklassigt vanligaste felen när nybörjare skriver cgi-script är: Man glömmer headern i svaret, eller gör en felaktig header. Genererar internal server error cgi-programmet är buggigt och avslutas inte. Genererar internal server error. Felmeddelanden finns dock i en loggfil, ofta filen / var/log/httpd/error_log Ett hett tips är att testa att köra programmen från kommandoprompt 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 53 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 54 Att köra cgi-script från kommandoprompt Det går oftast utmärkt att köra ett cgi-script från en kommandoprompt. Då ser man enkelt eventuella exekveringsfel. Kräver att man sätter några environmentvariabler. >setenv REQUEST_METHOD GET >setenv QUERY_STRING bil=volvo Därefter kör man programmet som vanligt, t.ex. >./programnamn om man befinner sig i samma katalog Dynamiskt innehåll med PHP Kort repetition av html Hur datatyp identifieras med MIME Hur data överförs med HTTP Hur dynamiskt webinnehåll kan skapas med cgiscript Hur variabelvärden överförs med formulär/cgi Hur dynamiskt innehåll kan skapas med PHP 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 55 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 56

Observationer gällande cgi-script Server-Pages-språk I de flesta fall ska output ha mime-typen text/html I dynamiskt genererade html-sidor är ofta största delen av sidan statisk, dvs statiska print-satser utan något dynamiskt innehåll. De flesta programmeringsspråk är utvecklade före webben, och är inte specialanpassade just för web-bruk. Snart efter webbens uppkomst utvecklades flera så kallade server pages-språk. Specialanpassade för web-bruk Hanterar problemen på föregående sida på ett bra sätt. Exempel: asp, jsp, php 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 57 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 58 PHP I denna kurs använder vi i år språket PHP som vunnit mycket i populäritet de senaste åren. Enkelt för nybörjare Stor spridning (5 miljoner servers för ett år sedan) Snabbt Grundtanken i server-pages-språk Är nästan som vanliga html-dokument, men på de platser man vill ha dynamiskt innehåll kan man placera programkod. Webservern noterar att sidan är en PHP-sida och låter en php-tolk förbehandla sidan, dvs exekvera programsnuttarna. Resultatet är ren html-kod (eller xml eller gif eller vad man vill), och tolkas som vanligt av webläsaren. Om inget annat anges sätts MIME-typen automatiskt till text/html 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 59 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 60

Enkelt exempel i PHP Formulär-variabler i PHP Det är mycket enkelt att komma åt variabler som skickats i en GET eller POST-request. De kan refereras genom $_REQUEST[ variabelnamn ], ibland även med $variabelnamn beroende på hur PHP installerats. Övriga variabler (t.ex. HTTP_USER_AGENT) kan hämtas med funktionen GETENV. 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 61 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 62 Variabelexempel i PHP Nästa gång media>cat test2.php <html> <head> <title>php-test</title> </head> <body> <h1>banan=<?php print $_REQUEST[ banan ];?></h1> <h1>bilar=<?php print $_REQUEST[ bilar ];?></h1> <h1>din browser: <?php print getenv('http_user_agent');?> </h1> Mer PHP-syntax Web och databaser Sessionshantering Cookies, gömda fält Skicka/ta emot mail från websidor </body> </html> 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 63 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 64

Sammanfattning Datatyper på webben hanteras med MIME-typer Filöverföring sker oftast med http Parametrar kan skickas mellan webläsare och webserver via GET (i URLen) eller POST (i body-delen). I båda fallen ska parametrarna URL-kodas Dynamiskt genererat innehåll produceras av vanliga program med printsatser, eller med Server Pages-språk som blandar html och programkod. Referenser http http://www.jmarshall.com/easy/http headers RFC 822 MIME RFC 1521 URI RFC 2396 Referenser 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 65 2005-04-22 Björn Hedin, Inge Frick, NADA/KTH 2002-2005 66