Design och implementering av ett webbaserat

Storlek: px
Starta visningen från sidan:

Download "Design och implementering av ett webbaserat"

Transkript

1 Design och implementering av ett webbaserat personalhanteringssystem Dean Maros Johan Norberg EXAMENSARBETE 2005 DATATEKNIK

2 Design och implementering av ett webbaserat personalhanteringssystem The development of a web based information system for employee administration Dean Maros Johan Norberg Detta examensarbete är utfört vid Ingenjörshögskolan i Jönköping inom ämnesområdet datateknik. Arbetet är ett led i den treåriga högskoleingenjörsutbildningen. Författarna ansvarar själva för framförda åsikter, slutsatser och resultat. Handledare: Magnus Schoultz Omfattning: 10p (C-nivå) Datum: 5/16/05 Arkiveringsnummer: Postadress: Besöksadress: Telefon: Telefax: Box 1026 Kyrkogatan (vx) Jönköping

3 Abstract Quickmatch is a company that recruits students to other companies that need temporary workers. Today all administration is done by hand, which is very time demanding and therefore inefficient. Employees send assignment reports by about the working hours and breaks to the administration office. Since these reports are handled manually, there is a great need for an automated system that makes the company more scalable. The purpose of this work was to solve the defined problem, i. e. increase the efficiency of the assignment administration by automation. In practical terms the solution was described as a web based information system. The requirements of such a system is high. Properties like compatibility with future software, platform independence and security are particulary important. Also aspects like usability and cost effectiveness influence the system design. The technology that was chosen was the web server Apache, the database server MySQL and the scripting language PHP. Because of the importance of the aspect of platform independence, no special platform came to attention; the goal is a working system on all platforms. The information system on the client side is based on normal browser software. No extra plugins should be needed for being able to use it. The decision was based on the goal that you should be able to use it on any computer connected to the Internet. To achieve the aspects of future and platform independent compatibility the page description language XHTML 1.0 Strict was chosen in combination of CSS. The language JavaScript was also selected to create DHTML functionality. On the server side the aspects of future and platform independent compatibility made the decision of minimizing dependencies. No other software than Apache, MySQL and PHP should be nessecary on the server. To minimize the dependency a SMTP client was written with PHP's socket functions. The mail function was used to send forgotten passwords to employees and to send assignment reminder messages. The database model that was chosen was UML. The decision was made because of the model's frequent uses for both academic purposes and in the industry. It was also because of the need for a model to guarantee an efficient system design. The work resulted in a information system that solved the defined problem. The assignment administration was made more efficient than before, which reduces the burden of work. The general aspects of the system was considered within acceptable limits. That consideration was based on the achieved specifications of requirements and the results of the testphase of the implemented system. Because of the limited time frame the system was reduced to only solve the defined problem. The design of the system does however have the capabilities for future extensions.

4 Sammanfattning Företaget Quickmatch är ett rekryteringsföretag som baserar sin verksamhet på studenter och hyr ut studenterna till olika företag som har behov av arbetskraft. I dagsläget hanteras alla uthyrningsuppdrag manuellt, vilket innebär att mycket tid ägnas åt att behandla uppdragsrapporter som anställda skickar med e-post. Denna aktivitet anses vara ineffektiv och ett stort intresse finns för en datorbaserad lösning som automatiserar den största delen av det administrativa arbetet. Syftet med detta arbete var att lösa dessa problem, dvs. att effektivisera uppdragshanteringen samt löneberäkningsdelen genom automatisering. I praktiska ordalag handlar denna effektivisering om ett webbaserat informationssystem. De krav som ställs på ett sådant system är stora. Egenskaper såsom långsiktighet, kompatibilitet, korrekthet och säkerhet är särskilt viktiga. Även aspekter som användbarhet och kostnad påverkar valet. Den teknologi som valdes för att skapa systemet var webbservern Apache, databasservern MySQL samt scriptspråket PHP. Eftersom principen om plattformsoberoende är en mycket viktig egenskap hos systemet valdes inte någon speciell plattform som systemet skulle basera sig på; målet var att det skulle fungera på alla plattformar. Informationssystemet baserar sig på vanliga browserprogramvaror. Inga extra plugin skall behövas för att kunna använda systemet. Målet med detta vägval är att man skall kunna använda systemet ifrån vilken dator som helst som har Internetuppkoppling. För att efterfölja målet om långsiktighet och kompatibelitet mellan plattformar valdes sidbeskrivningsspråket XHTML 1.0 Strict i kombination med användningen av CSS. Förutom klientens tolkning av sådana data används också JavaScript för DHTML-funktionalitet. Serversidan har också stora krav på kompatibilitet och långsiktighet. Det anses vara mycket viktigt att minimera systemens beroenden till andra programvaror på servern förrutom Apache, MySQL och PHP. Av denna anledning skrevs en egen SMTP-klient med hjälp av PHPs socketfunktioner. Mailfunktionen används för systemets hantering av glömda lösenord samt påminnelsefunktionalitet för uppdragshanteringen. Den systemutvecklingsmodell som valdes var UML eftersom den både används inom den akademiska världen samt på många företag. Den anses dessutom vara fördelaktig att använda för att garantera en god systemdesign. Arbetet har resulterat i ett system som sköter administreringen av företagets uppdrag samt löneberäkningar. Därmed löses det problem som definierats. En effektivisering med hjälp av informationssystemet minskar arbetsbördan hos företaget. De generella målaspekter som definierats anses vara acceptabla. Kravspecifikationen har efterföljts samt tester av implementation har givit ett positivt resultat. Eftersom utvecklingen av systemet har utförts inom en begränsad tidsperiod är systemet avgränsat till uppdragshanteringen. Systemets design skapar stora möjligheter för framtida utbyggnad. Nyckelord Apache MySQL PHP XHTML Informationssystem

5 Innehållsförteckning 1 Introduktion till problemområdet Företagsbeskrivning Introduktion Verksamhetsbeskrivning Personlig bakgrund Problembeskrivning och önskemål Mål och syfte Avgränsning Teoretisk bakgrund Nätverksprotokoll HTTP SMTP Databaser DBMS Modeller för databasmodellering Normalisering SQL Databasservrar Sidbeskrivningsspråk HTML CSS XHTML Implementationer av HTTP-protokollet Servrar Klienter Dynamisk webbfunktionalitet Användarcentrerade system Datasäkerhet Definitioner Databassäkerhet Standarder och rekommendationer W3C JPEG PNG och GIF W3Cs rekommendationer Genomförande Val av plattform och teknologier Systemutvecklingsmetod samt databasserver Webbserver Språk Komprimeringsformat och datarepresentation Systemdesignen Databasmodellering Användargränssnitt Utveckling av systemet Skapandet av grafik Programmeringsfasen Testfas Metod Genomförande och resultat Resultat Personalhanteringssystemet Systemets öppna del Systemets administrativa del Systemets del för timanställda Slutsats Diskussion...75

6 6 Referensförteckning Sökord...82

7 Introduktion till problemområdet 1 Introduktion till problemområdet 1.2 Företagsbeskrivning Introduktion Quickmatch är ett rekryteringsföretag som baserar sin verksamhet på uthyrning av studenter till företag. Företaget leds av två personer som hanterar ca. 100 timanställda och två anställda som sköter viss administration. De områden som företaget främst inriktar sig mot är lagerhantering, restaurangbranschen samt lackering. I dagsläget använder sig företaget av ett webbaserat system som innehåller timanställdas CV. De sköter all annan personalhantering manuellt. Rapportering av timanställdas uppdrag sker i nuläget via e-post eller telefon Verksamhetsbeskrivning Figur 1-1: Verksamhetbeskrivning i nuläge Figuren ovan beskriver företagets verksamhet. Rektangelobjekten representerar en person eller grupp av personer, t. ex. Kund. Rektanglarna med en spets i höger kant representerar något som utförs, exempelvis Personalhantering. Romben beskriver vilken information som överförs mellan de två förstnämnda objekten, t. ex. Detaljerad uppdragsbeskrivning. En kund ringer och talar om att arbete finns under en viss tidsperiod och undrar om arbetskraft för detta existerar. Quickmatch ringer till timanställda som kan tänkas kunna jobba. Tillsammans med frågan beskrivs uppdraget. När den efterfrågade arbetskraften hittats skickas en 7(106)

8 Introduktion till problemområdet bekräftelse till kunden. När arbetet har utförts av de berörda timanställda skickas en uppdragsrapport till quickmatch som innehåller antalet arbetstimmar grupperade efter tid på dygnet då dessa är olika viktade. Rapporteringen sker via e-post. Uppdragsrapporteringen utmynnar sedan till löneberäkningar som beräknas för hand av Quickmatch. Om det är första gången en anställd utför ett uppdrag på det specifika företaget används lägre faktureringsavgifter, medan den timanställde har oförändrad timlön. I detta fall samt normala fall baserar sig fakturan på en påläggssats, som kan variera beroende på situation. 1.3 Personlig bakgrund Efter tre års studier på programmet Information och medieteknik har vi genomgått kurser inom ett brett område. Förutom grundläggande kurser inom naturvetenskapliga ämnen och datatekniska områden har vi bl. a. läst kurser om ekonomi, organisationsteori, kommunikationsteori samt ingenjörsmetodik. Detta har lett till en ökad förståelse av hur företag fungerar och hur de bör utvecklas. De datatekniska kurserna som lästs behandlar operativsystem, datakommunikation, programmering, databashantering och systemutveckling, utformning av gränsnitt samt grafisk teknik. Då vår huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper inom sådana områden. Detta har gett oss förmågan att bl. a. skapa webbaserade informationssystem. 1.4 Problembeskrivning och önskemål Quickmatch har en ineffektiv hantering av timanställda. Det finns inget automatiserat system för uppdragshanteringen. I dagsläget sköts rapportering om uppdrag, löneberäkningar och annan information manuellt. Detta resulterar i stor tidsåtgång för företagets administrativa del. Det begränsar också i viss mån företagets utveckling. Med datorns hjälp skulle man kunna minimera denna administrativa del. I och med att ett sådant system skulle kunna hantera en mycket större mängd uppdrag, skulle företaget växa och uppnå en bättre lönsamhet. Dessutom saknas i dagsläget ett unifierat system för alla administrativa arbetsuppgifter. Dessa kan sammanfattas som företagsbeskrivning, företagskontaktuppgifter, uppdragshantering, CV-hantering samt ekonomisk hantering (t. ex. löneberäkningar och fakturering). Då företaget har timanställda som inte befinner sig i samma byggnad som den administrativa delen finns ett stort intresse att de timanställda på något sätt ska kunna komma åt datorsystemet utifrån. Företagsledningen är mycket intresserade av att använda Internet som kommunikations-kanal mellan timanställd och företagets datorsystem. Detta eftersom denna lösning både är ekonomiskt fördelaktig samt använder sig av beprövad 8(106)

9 Introduktion till problemområdet teknik. Quickmatch är intresserade av ett datorsystem som förväntas fungera under en längre tidsperiod. Det bör ha en konstruktion som klarar att anpassa sig till förändrade förhållanden samt plattformar som kan tänkas användas i framtiden. Det finns därför intresse för att systemet ska ha så få beroenden. Det skall i sin helhet fungera så självständigt som möjligt. 1.5 Mål och syfte Huvudmålet är att skapa en väl fungerande lösning till det beskrivna problemet, dvs. effektivisering av timanställdhanteringen. För att uppnå detta mål måste man tänka på helheten. Förrutom själva systemdesignen måste man tänka på kärnan, system-programvaran samt serverprogramvaran. Går man en annan väg är sannolikheten stor att målet inte uppnås. Man kan betrakta huvudmålet som delmål som tillsammans skapar helheten. Dessa delmål beskriver generella egenskaper hos lösningen till problemet och beskrivs nedan. Säkerhet Eftersom systemet hanterar personuppgifter och timanställdas löner är kravet på säkerhet stort. Åtgärder för att minimera risken för intrång måste utföras. En balans måste dock upprätthållas då funktionaliteten inte får påverkas i någon större omfattning av dessa åtgärder. Funktionalitet För att uppnå målet måste lösningen vara av sådan karaktär att man med hjälp utav en viss funktionalitet löser problembeskrivningen. Den funktionalitet som avses beskrivs i kravspecifikationen som ingår som bilaga i rapporten. Användbarhet Saknas användbarhet blir lösningen oanvändbar för de personer som ska använda systemet. Man måste därför välja en väg som tillhandahåller god användbarhet. Med detta delmål avses ett användargränssnitt som är helt självförklarande. Ingen ytterligare beskrivning än själva gränssnittet skall behövas för att användaren ska förstå hur man arbetar i systemet. Man bör dock anta att personen ifråga känner till hur företagets verksamhet ser ut. Korrekthet och robusthet Det är viktigt att lösningen som väljs har en korrekt konstruktion. Den påverkar både resultatets noggrannhet samt stabilitet. Om en funktion inte är tillräckligt väldefinierad kan problem uppstå om förutsättningarna ändras. Detta kan exempelvis uppstå vid omskrivning av en annan funktion som är beroende av den nämna funktionen. Man kan beskriva denna egenskap genom analogin med att bygga ett hus. Använder man bristfälligt material eller felaktig metod för att bygga grunden till huset, kan allting rasera vid förändrade förhållanden. 9(106)

10 Introduktion till problemområdet Robusthet beskriver anpassningsförmågan. Om t.ex. en funktion är hårdkodad för vissa förhållanden blir den mindre robust än om den dynamiskt anpassar sig till nya miljöer. Flexibilitet och kompatibilitet Ett system som är förändringsbart och långlivat är egenskaper för en god lösning. Det som påverkar denna egenskap till största grad är lösningens arkitektur samt i vilken miljö den är placerad. Denna egenskap har en viss likhet med den föregående, dvs. båda beskriver arkitekturens utseende. Ibland kan den robusta egenskapen minska en lösnings flexibilitet eller kompatibilitet. Om huset som beskrevs ovan var konstruerat i armerad betong hade det varit svårt att förändra (t. ex. öppna en vägg för utbyggnad). Man bör därför välja en lösning som balanserar den robusta egenskapen med flexibiliteten till systemets fördel. Prestanda och tillgänglighet Denna egenskap påverkar till stor del hur lösningen upplevs av de som använder det. Denna ofta subjektiva aspekt beror främst på svarstider mellan klient och servern. Hur dessa uppfattas beror på individen som använder systemet. Dessa tider påverkas indirekt av vilka åtgärder man utför för att tillhandahålla god tillgänglighet. Det går dock att reducera subjektivismen för dessa två aspekter genom att relatera till kravspecifikationen samt att mäta tiden för en viss funktionalitet. Kostnad Denna aspekt alltid viktig i företagssammanhang. Lösningen ska vara kostnadsmässigt effektiv, men ska samtidigt bibehålla en specifik kvalité. 1.6 Avgränsning Det problemområde som arbetet främst inriktar sig på är uppdragshanteringen och lönehanteringen. Delar såsom företagsbeskrivning, företagskontaktuppgifter samt CV-hantering har lägre prioritet. Fakturahantering och standardinställningar per kund har också fått låg prioritet. Denna fokusering har valts eftersom de valda områdena skapar flest problem i företaget. Dessa prioriterade delar baserar sig på de generella egenskaperna som nämndes i föregående avsnitt. 10(106)

11 Teoretisk bakgrund 2 Teoretisk bakgrund Nedanstående avsnitt fokuserar sig på de tänkbara teoretiska aspekterna som kan förekomma vid skapandet av ett datorsystem som beskrivits. Eftersom arbetet bygger vidare på redan befintlig teknologi förekommer också beskrivning av de grundläggande praktiska byggstenarna samt deras fördelar och nackdelar. Avsnitten är ordnade efter abstraktionsnivå. De lägsta nivåerna beskrivs först och det som bygger vidare på det underliggande presenteras därefter. Materialet grupperas till en viss grad ockå i en ordning som underlättar förståelsen av området. 2.1 Nätverksprotokoll HTTP HTTP (HyperText Transfer Protocol) är en av de vanligaste metoderna för att överföra data på Internet. Dess främsta syfte är i dagsläget att överföra HTML-filer ifrån en webbserver till en klient, men protokollet stödjer överföring av vilken filtyp som helst. Protokollet skapades av ett samarbete mellan W3C (World Wide Web Consortium) och IETF (Internet Engineering Task Force) och finns beskrivet i olika RFC. Den senaste HTTP versionen 1.1 finns beskrivet i RFC HTTP är ett protokoll som baserar sig på överförandet av så kallade HTTP Requests samt HTTP Response mellan server och klient. Kommunikationen sker på port 80 via TCP-protokollet. All trafik som skickas mellan klienten och servern överförs okrypterat via klartextkommandon. Möjlighet för kryptering finns dock via HTTPSprotokollet som använder sig av ett SSL-lager ovanpå den vanliga HTTP-kommunikationen. Detta protokoll kommunicerar på TCP-port 443. [1] För att peka ut en resurs på en HTTP-server använder man sig utav URL (Uniform Resource Locator), som baserar sig på DNS-protokollet för namnhantering. En sådan har följande syntax: protokoll://host:port/adress I praktiken brukar porten utelämnas då den är standardiserad för det angivna protokollet. Exemplet nedan visar en URL i praktiken: Användningen av URL är inte endast för HTTP-protokollet utan det finns ett stort användningsområde. Ett annat begrepp är URI (Uniform Resource Identifier) som är en mer generell beskrivning av en resurs. Skillnaden mellan en URI och URL är att en URI indentifierar en resurs i generell form, medan en URL identifierar en resurs och anger hur man hittar resursen. Ibland används begreppet URI istället för URL då en URL i nästan alla fall också är en URI. [2] 11(106)

12 Teoretisk bakgrund Som tidigare nämnts kommunicerar klienten med servern via klartextkommandon. Klienten skickar en Request-PDU som innehåller det önskade kommandot, vilket sedan besvaras med en ResponsePDU. De vanligaste kommandona exemplifieras nedan. GET Det vanligaste kommandot. Begär en specifik resurs med hjälp utav en URL. Eftersom browsern kopplar upp sig till den server som användaren angett via URL:en anges endast den sökvägen till filen i detta kommando. Ett sådant kommando demonstreras nedan. GET /rfc/rfc2068.txt HTTP/1.1 Host: Enligt RFC 2616 måste man i HTTP 1.1 ange Host-fältet i alla requests för att inte få felkoden 400 (Bad Request). Likt alla kommandon avslutas det med CRLF (Carriage Return Line Feed). Det som returneras är information om servern, information om datat och sedan själva datat, vilket i detta fall är en ASCII-fil. Det går också att skicka med variabeldata till GET-kommandot genom att använda? och & -tecknen i slutet av URL:en. Detta kan sedan behandlas i servern t. ex. med hjälp av CGI, ASP, PHP eller något motsvarande. En sådan rad ser ut enligt följande exempel. GET /info.php?v1=detta+är+ett+test&v2=test%20%20nr.+2 HTTP/1.1 Host: Mottagen variabeldata: v1= Detta är ett test v2= Test nr. 2 Servern kan sedan använda dessa variabler för att spara informationen på servern eller generera en webbsida baserat på datat som sedan returneras till klienten. HEAD Ett kommando som endast begär headern till t. ex. en HTML-fil. Det som returneras är information om servern, vilket format filen har samt vilken kodning den har. Exempel nedan visar kommandosyntaxen: Head /info.php HTTP/1.1 Host: [1,3] 12(106)

13 Teoretisk bakgrund POST POST används för att skicka data till servern. Detta brukar oftast vara formulärdata som servern ska lagra eller behandla. Variabeldata lagras i HTML-koden som sedan browsern skickar via POSTkommandot. Ett praktiskt exempel visas nedan: POST /info.php HTTP/1.1 Host: Content-Type: application/x-www-form-urlencoded Content-Length: 17 v1=test1&v2=test2 Mottagen variabeldata: v1= test1 v2= test2 Observera att Content-Length måste anpassas till den datamängd som ska skickas. I detta fall används 8-bitar för att representera ett tecken, vilket leder till att 17 Byte ska skickas. Denna längd inkluderar även de tecken som beskriver själva variabeln. Beskrivningen om datat och själva datat är skilt med ett extra CRLF. Precis som med GET-kommandot kan man hantera variablerna på servern, med den enda skillnaden att de hämtas ifrån en annan källa. [4] Det finns några ytterligare kommandon i HTTP-protokollet som t. ex. PUT och Delete. PUT kan användas för att lägga upp en fil på servern medans Delete tar bort en vald fil. Dessa kommandon brukar dock av säkerhetsskäl aldrig användas. Ofta är de inte ens implementerade i serverprogramvaran. [1] Som ett komplement till kommandona GET och POST finns cookies. Det är en variabel som servern kan välja att definiera. En sådan lagras lokalt på klientens hårddisk. När en klient ansluter till en server som tidigare skapat en sådan cookie, kommer klienten att skicka med denna. Ofta brukar sessionsvariabler skickas med via cookies. De data som en cookie lagrar exemplifieras nedan. Name: Content: Host: Path: Send for: Expires: PHPSESSID 405febc25e4e5fcc3007eaba82f3167b guilong.org / Any type of connection at end of session Denna cookien talar om för webbservern vilken användare som ansluter och den kan då anpassa innehållet därefter. [5] Det finns två versioner av HTTP-protokollet, nämligen version 1 och 1.1. Den första versionen kopplar ner uppkopplingen efter varje request som klienten skickar. Detta resulterar i en långsam dataöverföring då TCP-protokollet använder sig av slow start, eftersom hastigheten inte hinner öka då uppkopplingen stängs. Ett annat relaterat problem är det som uppstår när varje request hanteras separat. För varje uppkoppling som skapas måste en 13(106)

14 Teoretisk bakgrund trevägshandskakning genomföras, vilket är tidskrävande om det är stort fysiskt avstånd mellan server och klient. Lösningen till dessa problem kom i och med version 1.1 av HTTPprotokollet. I denna versionen kan man skicka flera requests åt gången och därmed eliminera problemet med slow start i kombination med att endast en trevägshandskakning utförs. Är kommunikationen mellan klient och server inaktiv kommer dock uppkopplingen att stängas ner efter ett tag, men detta orsakar inga praktiska problem. [6] SMTP SMTP (Simple Mail Transfer Protocol) är ett nätverksprotokoll som används för att skicka e-post. Det baserar sig på TCP-protokollet och använder porten 25. RFC 2821 är det aktuella dokumentet som beskriver dess funktionalitet. SMTP-protokollet är en del av ett e-postsystem. Det ansvarar för skickandet av posten, vilket oftast brukar benämnas som MTA (Mail Transfer Agent). För att hämta/läsa skickad epost används protokollen POP3 (Post Office Protocol) samt IMAP (Internet Message Access Protocol). SMTP använder sig av DNS för hantering av nätverksadresser. Som nämnts i avsnitt skickar SMTP-servern en MX-förfrågan till den DNS-server som ansvarar för en specifik domän, för att ta reda på vilken andress som den ska skicka data till. Protokollet är ASCII-baserat, likt HTTP-protokollet där kommandon skickas mellan klient och server. Man kan därför exempelvis använda sig av telnet för att skicka e-post. Exemplet nedan visar hur det går till: guilong@guilong:~# telnet smtp.bredband.net 25 Trying Connected to smtp.bredband.net. Escape character is '^]'. 220 mxfep02.bredband.com ESMTP server ready Thu, 21 Apr :31: HELO guilong.org 250 mxfep02.bredband.com MAIL FROM: dm02nojo@ing.hj.se 250 Sender <dm02nojo@ing.hj.se> Ok RCPT TO: dm02made@ing.hj.se 250 Recipient <dm02made@ing.hj.se> Ok DATA 354 Ok Send data ending with <CRLF>.<CRLF> Subject: Testar SMTP-protokollet From: dm02nojo@ing.hj.se Hej! testar Message received: LCCY3591.mxfep02.bredband.com@guilong.org QUIT 221 mxfep02.bredband.com ESMTP server closing connection Connection closed by foreign host. 14(106)

15 Teoretisk bakgrund Det fetmarkerade representerar det inmatade. Varje kommando avslutas med CRLF. Undantaget är DATA-definitionsdelen som avslutas med sekvensen CRLF.CRLF, dvs. en punkt på en tom rad. Kommandoraderna skickar brevet till den angivna adressen. [7] Om man vill skicka med binärdata (t. ex. en zip-fil), använder man sig av något som kallas MIME (Multipurpose Internet Mail Extensions) för att beskriva datat. Det används också om man vill skicka text i annan kodning än ASCII. MIME beskrivs med hjälp utav olika headers som anges i brevets datadel. Följande exempel skickar ett brev kodat i base64, som garanterar bevaringen av specialtecken såsom å,ä och ö. Denna kodning använder sig av ASCII-tabellen som alla SMTP-servrar stöder. guilong@guilong:~# telnet smtp.bredband.net 25 Trying Connected to smtp.bredband.net. Escape character is '^]'. 220 mxfep01.bredband.com ESMTP server ready Thu, 21 Apr :55: HELO guilong.org 250 mxfep01.bredband.com MAIL FROM: dm02nojo@ing.hj.se 250 Sender <dm02nojo@ing.hj.se> Ok RCPT TO: dm02made@ing.hj.se 250 Recipient <dm02made@ing.hj.se> Ok DATA 354 Ok Send data ending with <CRLF>.<CRLF> MIME-Version: 1.0 Subject: Testar SMTP-protokollet med MIME och base64 From: dm02nojo@ing.hj.se Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW. 250 Message received: FLOU9446.mxfep01.bredband.com@guilong.org QUIT 221 mxfep01.bredband.com ESMTP server closing connection Connection closed by foreign host. Den kodade base64-strängen SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW översätts till Hej\nTestar åäö ÅÄÖ av mailklienten. Vill man skicka ett brev som endast innehåller HTML-kodning kan man göra så genom att ändra raden Content-Type: text/plain; charset="us-ascii", till Content-Type: text/html; charset="us-ascii" och använda lämplig base64data. Detta rekommenderas dock inte då man inte kan räkna med att alla mailprogram stöder html. Möjligheten finns dock. 15(106)

16 Teoretisk bakgrund Nedanstående rader kodar både i text och i HTML. Det garanterar att alla kan läsa epostmeddelandet då textversionen kommer att visas om HTML inte stöds i mailprogrammet. Eftersom inte alla SMTP-servrar klarar kodning som skiljer sig ifrån ASCII-formatet, kodas informationen med hjälp av base64metoden. På så sätt skapar man kompatibilitet både på SMTP-servrarna och för de program som ska läsa brevet. guilong@guilong:~# telnet smtp.bredband.net 25 Trying Connected to smtp.bredband.net. Escape character is '^]'. 220 mxfep01.bredband.com ESMTP server ready Thu, 21 Apr :24: HELO guilong.org 250 mxfep01.bredband.com MAIL FROM: dm02nojo@ing.hj.se 250 Sender <dm02nojo@ing.hj.se> Ok RCPT TO: dm02made@ing.hj.se 250 Recipient <dm02made@ing.hj.se> Ok DATA 354 Ok Send data ending with <CRLF>.<CRLF> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="next_part" Subject: Testar SMTP-protokollet med text och html via MIME From: Johan Norberg To: Dean Maros This is a multi-part message in MIME format. --next_part Content-Type: text/plain; charset="iso " Content-Transfer-Encoding: base64 SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW --next_part Content-Type: text/html; charset="iso " Content-Transfer-Encoding: base64 PGh0bWw+PGhlYWQ+PHRpdGxlPlRlc3RhciBNSU1FIG1lZCBIVE1MLWRlbDw vdgl0bgu+pc9ozwfkpjxib2r5pjx0ywjszsbib3jkzxi9ijeiignlbgxzcg FjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+PHRyPjx0ZD5hPC90ZD48dGQ+Y jwvdgq+phrypjx0cj48dgq+yzwvdgq+phrkpmq8l3rkpjx0cj48l3rhymxl PjwvYm9keT48L2h0bWw+ --next_part Message received: GEKU9446.mxfep01.bredband.com@guilong.org QUIT 221 mxfep01.bredband.com ESMTP server closing connection Connection closed by foreign host. HTML-versionen av brevet visar en table med två rader och två kolumner med bokstäverna a, b, c, och d. Innehållet i brevet borde varit samma, men exemplet finns för att demonstrera principen. 16(106)

17 Teoretisk bakgrund Observera att två extra - -sträck placeras före next_part samt att den sista brytsträngen skrivs som --next_part--. [8, 9, 10] 2.2 Databaser DBMS En DBMS (DataBase Management System) är ett system för hantering av databaser. Nuförtiden är alla datoriserade och hanterar data för alla dagens informationssystem. Det finns ett flertal olika DBMSkategorier som strukturerar data på olikartade sätt. De vanligaste kategorierna är relationsdatabaser (RDBMS) samt objektorienterade databaser (ODBMS). [11] Relationsdatabaser är en databas som innehåller tabeller och kolumner som har en logisk relation till varandra. Information om ett specifikt område är placerade i en och samma tabell där alla egenskaper är beroende av en eller flera huvudnycklar. Flera tabeller kan sedan ha en relation mellan varandra. Relationsmodellen liknar människans sätt att tänka och därför finns det klara fördelar att använda den framför äldre hierarkiska modeller. [12] ODBMS-modellen baserar sig istället på objektorienterade principer för hur man lagrar data. Med denna modell är data strukturerat på samma sätt som när man ska använda datat. Det behövs därför inte någon tidskrävande omvandling till ett lämpligt format. [13] Det förekommer också en kategori som kallas ORDBMS (ObjectRelational DBMS) som en del databasservrar använder sig av. Med denna modell kan man definieras egna datatyper och metoder. Man kan då spara datastrukturen på samma sätt som det används i likhet med ODBMS-modellen. [14] Modeller för databasmodellering I ett systemutvecklingsarbete brukar man använda sig utav olika modeller. Dessa används för att kunna avbilda det väsentliga i verkligheten. Med denna förenklade bild kan man sedan hantera komplexa problem. UML UML (Unified Modeling Language) är en standardiserad modell för informationsmodellering. Modellen används som ett verktyg för att strukturera samt visualisera informationssystemet som ska konstrueras. Huvudsyftet med UML är att se till att systemdesignen definieras innan man börjar med programmeringen. Använder man inte en strukturerad metod vid systemutvecklingsarbetet finns en stor risk att man ägnar för lite tid åt analys och designfasen och då för snabbt hoppar in i kodningsfasen. Modellen använder sig utav ett objektorienterat tankesätt när man modellerar information. Detta medför att man kan återanvända kod och på så sätt kunna utveckla system i en snabbare takt. [15] 17(106)

18 Teoretisk bakgrund UML fungerar oberoende av programmeringsspråk samt vilken utvecklingsprocess man befinner sig i. Med hjälp av ett standardiserat UML-språk kan man beskriva det grafiska utseendet av informationen. Genom att använda olika diagramtyper kan man visualisera olika strukturer eller händelser. De vanligaste typerna är klassdiagram, objektdiagram, use case -diagram samt aktivitetsdiagram. Klassdiagram Klassdiagrammet beskriver informationens struktur och dess relationer. Strukturen grupperas i olika klasser som kan bestå utav en eller flera objekt. Dessa objekt har olika attribut som beskriver en egenskap hos ett ojekt, t. ex. färg för objektet bil. Klassen som hanterar bil-objektet skulle kunna benämnas som fordon. Dessa klasser har relationer med varandra. Förutom att bestämma relationen mellan två klasser beskrivs också vilken information som krävs för att beskriva själva relationen. Klassdiagrammet beskriver översiktligt vilka klasser som finns och dess relationer. Objektdiagram Objektdiagrammet som är mycket snarlikt klassdiagrammet beskriver en del av klassdiagrammet; en fokusering inom ett specifikt informationsområde. Use case -digram Use case -diagram används för att beskriva aktiviteter och dess aktörer. De brukar användas då man vill beskriva en specifik uppgift, t. ex. bilförsäljning där kunder, försäljare och leverantörer är aktörer. Aktivitetsdiagram Aktivitetsdiagrammet visar olika typer av flöden. Det kan vara dels informationsflöden mellan olika aktiviteter och objekt och dels varuflöden. Ett vanligt användningsområde är verksamhetsbeskrivningar, t. ex. verksamhetsbeskrivningen i avsnitt [16] 18(106)

19 Teoretisk bakgrund Normalisering Det finns en del teorier och metoder för hur en god databasdesign bör se ut för att minimera logiska problem. Dessa benämns som normalformer där oftast de tre första brukar nämnas. Första normalformen (1NF) Om upprepade kolumner existerar skall dessa tas bort och placeras i en speparat tabell. Detta gör man för att få en god struktur i tabellerna. En sådan åtgärd brukar benämnas som utbrytning av repetetiva attribut. Andra normalformen (2NF) Den andra formen innebär att man inte ska använda överflödig information i en tabbell. Detta kan t. ex. vara att man anger kundnamn och kundadress i tabellen som hanterar en order. I ordertabellen bör det endast finnas med sånt som måste finnas med såsom exempelvis orderid och kundid. [17] Tredje normalformen (3NF) Om ett attribut är unikt identifierbart med ett annat attribut som inte är en nyckel, strider detta mot den tredje normalformen. Man bör istället placera dessa två i en egen tabell. Nedanstående exempel visar brott mot tredje normalformen och dess lösning. [18] Ej 3NF 3NF Datorkomponent Datorkomponent Leverantör *KomponentID Produktnamn Leverantör Leverantörsadress *KomponentID Produktnamn Leverantör *Leverantör Leverantörsadress Figur 2-1: Tredje normalformen SQL SQL (Structured Query Language) är ett språk som används för att hantera relationsdatabaser. Man kan med språket skapa, förändra samt hämta data. Språket utvecklades av IBM i början av 1970-talet och hette ursprungligen SEQUEL (Structured English Query Language). Namnet ändrades dock senare till SQL då det andra namnet redan var upptaget. Numera är SQL utökat med funktioner som hanterar den objekt-orienterade databasmodellen. Språket baserade sig på publikationen A Relational Model of Data for Large Shared Data Banks av Dr. Edgar F. Codd som 1970 definierade relationsdatabasmodellen. Dr. Codd, som arbetade som forskare på IBM skapade ett stort intresse med teorin då det fanns stora ekonomiska fördelar jämfört med tidigare modeller. IBM skapade sedan ett språk baserat på dessa principer, vilket 1992 blev en ISOstandard i sammarbete med ANSI som redan definierat en standard Sedan dess har ett flertal revideringar av standarden 19(106)

20 Teoretisk bakgrund genomförts. Språket är designat för att styra databaser och är definionsmässigt inget fullständigt programmeringsspråk, men trots detta går det att åstadkomma avancerade databasoperationer. Genom att använda sig av kommandon (ibland benämnda som frågor) samt nyckelord kan man hantera databasen och dess innehåll. [19] DML Kommandon som hanterar databasens data kallas DML (Data Manipulation Language). Med detta avses operatorerna lägg till, uppdatera och ta bort. Denna kategori är den största delen av SQL. [20] Alla frågor avslutas med semikolon. Nedanstående kommandon är de vanligast förekommande: SELECT Hämtar ingen eller flera rader av data. Eftersom man oftast är intresserad av data som uppfyller vissa krav (t. ex. de produkter som ligger inom ett viss prisintervall i ett e-handelssystem) finns en mängd nyckelord. De mest frekvent använda är följande: FROM Beskriver vilken tabell som information ska hämtas ifrån. WHERE Beskriver vilken information man är intresserad av. LIKE Beskriver data som innehåller en definierad sträng. ORDER BY Ordnar informationen (storleksordning, bokstavsordning) i stigande eller fallande ordning. GROUP BY Beskrivning om vilken kolumn som man ska gruppera kring. HAVING En metod som används för att filtrera grupperad data, ofta med hjälp av hjälpfunktioner som t. ex. COUNT(). Utöver dessa nyckelord förekommer hjälpfunktioner som utför vanliga matematiska operationer baserat på de utplockade posterna. Man använder sig också av logiska operatorer samt regular expressions, för att kunna beskriva de villkor som gäller för den eftersökta informationen. Ett exempel på ett SELECT-kommando: SELECT * FROM Order WHERE KundID= AND Orderdatum!= ORDER BY OrderID ASC; Detta kommando hämtar all information om de ordrar som finns ifrån tabellen Order för kunden med kundnumret 13543, förrutom de som lagts Dessutom ordnas informationen i stigande ordning 20(106)

21 Teoretisk bakgrund baserat på OrderID-kolumnen. INSERT Detta kommando används för att lägga till data till tabellen. Man använder sig likt SELECT- kommandot av nyckelord. De som finns beskrivs nedan. INTO Anger vilken tabell som data skall placeras. VALUES Anger att data ska anges För att ange vilken tabell, vilka kolumner och vilken data som skall matas in i tabellen används parenteser med kommaseparerat innehåll. Ett exempel nedan demonstrerar INSERT-kommandot. INSERT INTO Order (OrderID, KundID, Datum) VALUES (223936, 13543, ); Kommandot lägger till data för en ny order i tabellen Order. Själva orderinformationen (vilka produkter och antal) anges i en annan tabell då man bryter ut repetetiva attribut. UPDATE Kommandot UPDATE används för att ändra i en redan skapad rad. Man brukar använda sig av nyckelordet WHERE för att ange vilken information som ska ändras. Följande exempelvis visar kommandots struktur. UPDATE Order SET KundID= WHERE OrderID= ; Kommandot ändrar kundid:t till för den post som har OrderID:t DELETE Detta kommando raderar en eller flera poster i en tabell. I nästan alla fall används WHERE-nyckelordet för att undvika radering av alla existerande poster i tabellen. Exemplifiering av kommandots utseende nedan. DELETE FROM Order WHERE OrderID= ; Detta kommando raderar den post som beskriver Ordernr Följande kommando förstör dock det informativa system som numreringen representerar. Det kommer inte längre finnas stycken ordrar lagda i systemet då man tagit bort en eller flera. I vissa fall är det motiverat att i en extern miljö använda en funkion som indexerar om alla poster så att numret stämmer. Eftersom detta är en komplicerad åtgärd för CPUn, är det inte en god metod om det handlar om stora mängder data. Man kan exempelvis istället räkna alla poster med COUNT() för att få den efterfrågade informationen. [19] 21(106)

22 Teoretisk bakgrund DDL En annan kategori av SQL-kommandon är de som har benämningen DDL (Data Definition Language). Med detta menas de kommandon som hanterar och definierar den datastruktur som ska beskriva informationen. I praktiska ordalag handlar det om vilken uppbyggnad en tabell har; vad den ska heta, vilka variabeltyper som används för kolumner samt egenskaper som nycklar samt annat som har med själva tabellens funktionalitet att göra. Dessa kommandon är främst CREATE, DROP och ALTER. [20] CREATE Kommandot som skapar en tabell i en databas. Ett exempel nedan demonstrerar hur det används: CREATE TABLE Företagsuppgift ( FöretagsuppgiftID TINYINT UNSIGNED NOT NULL PRIMARY KEY, Företagsnamn VARCHAR(20), Adress VARCHAR(20), Postnummer VARCHAR(10), Ort VARCHAR(20), Telefonnr VARCHAR(15), Mobiltelefonnr VARCHAR(15), Epostadress VARCHAR(50), Organisationsnr VARCHAR(20), Momsregnr VARCHAR(20), Bankgiro VARCHAR(15), Postgiro VARCHAR(15) ); Kommandot skapar tabellen Företagsuppgift, där FöretagsuppgiftID är nyckeln. Med nyckelordet NOT NULL anges att attributet måste matas in. Gör man inte det skapas inte posten i tabellen. Likt programmerings-språket C beskrivs vilken datatyp som skall användas för varje attributet. En unsigned tinyint motsvarar en unsigned char i C (8 bitar). Variabeltypen VARCHAR är en strängvariabel där man anger längden (antal tecken) inom parentesen. Lagringsmässigt tar en VARCHAR upp (antal_tecken + 1) Byte. [17] CREATE används också då man från början skapar databasen: CREATE DATABASE Quickmatch; DROP Detta kommando raderar en tabell eller databas. Nedanstående exempel visar dess användning där man först raderar tabellen Företagsuppgift och sedan databasen där tabellen fanns. DROP TABLE Företagsuppgift; DROP DATABASE Quickmatch; 22(106)

23 Teoretisk bakgrund ALTER Kommandot ALTER används för att ändra egenskaper för en tabell, t. ex. ta bort en kolumn, lägga till en kolumn eller specificera att ett särskilt attribut måste matas in. Med hjälp av nyckelorden ADD, DROP eller CHANGE åstadkomms detta. Detta är exemplifierat nedan. ALTER TABLE Företagsuppgift, ADD COLUMN Företagsbeskrivning VARCHAR(100), CHANGE Epostadress epost VARCHAR(50) NOT NULL, DROP COLUMN Mobiltelefonnr; Kommandot lägger till kolumnen Företagsbeskrivning, ändrar egenskaperna (attributnamnet och NOT NULL -egenskapen) för attributet Epostadress samt tar bort kolumnen Mobiltelefonnr. [19] DCL Den sista kategorin som beskriver SQL-kommandon är DCL (Data Control Language). Den hanterar det behörighetssystem som finns i databasservern. [21] Med hjälp utav kommandona GRANT och REVOKE kan man beskriva vad respektive användare kan komma åt i databasen. Med GRANT ger man behörighet, medan med REVOKE tar man bort behörigheter. Exemplet nedan demonstrerar syntaxen. GRANT FULL PRIVILEGES ON Quickmatch.* TO mysql@localhost IDENTIFIED BY 'lösenord' WITH GRANT OPTION; Kommandot ger alla rättigheter för databasen Quickmatch till användaren mysql på den lokala datorn. Som åtkomstmetod sätts ett lösenord. [19] Databasservrar Nedanstående databasservrar baserar sig främst på relationsdatabasmodellen. Denna kategori är i dagsläget den vanligaste och därmed fokuseras området. IBM DB2 IBMs databasserver DB2 har funnits sedan början av 1980-talet. Den var den första som använde sig av det standardiserade språket SQL. Servern baseras på ORDBMS och hanterar därför även egendefinierade datastrukturer. Servern går att köra på ett flertal plattformar, bl. a. på UNIX-system, Windows och Linux. Det går att adminstrera dels via en kommandotolk och dels via GUI (Graphical User Interface). Databasservern har ett stort API-stöd (Application Programming Interface), bl. a. C,C++, Fortran, Java, Perl, Python, PHP och.net. [22] 23(106)

24 Teoretisk bakgrund Microsoft SQL server Microsofts databasserver SQL server baserade sig ursprungligen på databaskod ifrån programvaran Sybase SQL server som Microsoft sedan byggde vidare på. Serverprogramvaran finns i ett flertal olika versioner för olika tillämpningar, dock endast till Windowsplattformen. Databasen baserar sig på relationsmodellen men till skillnad från de flesta andra databasservrar baserar det sig inte på SQL, utan något som kallas för T-SQL (Transact-SQL). Detta språk är en utbyggnad av det standardiserade SQL-92. En fördel med serverprogramvaran är om man baserar hela sin verksamhet på Windowsplattformen då servern är starkt bunden till operativsystemet. [23, 24, 25] MySQL MySQL är en databasserver som främst utvecklas av det svenska MySQL AB. Programvaran använder sig av open sourcemodellen som utvecklingsmodell. Detta innebär att all källkod till programmet är öppet för alla och det är tillåtet att göra egna modifierar. Programmerare i hela världen är med och utvecklar programvaran, något som gör att utvecklingen framskrider i en hög hastighet då inte bara anställda i företaget arbetar med koden. På senare år har programvaran blivit mycket populär för webbaserade system, t. ex. LAMP-servrar (Linux Apache MySQL PHP). Den har också blivit populär för större databasdrivna system; bl. a. använder sig NASA, Google, Dow Jones (amerikanska börsen) samt Ericsson av programvaran. MySQL använder sig av något som kallas dubbel licensmodell. Förrutom open sourcelicensen som kräver att källkoden ska vara öppen och fri finns även en kommersiell licens. Denna används av företag som vill använda databasservern i sin produkt men som vill tillämpa closed sourcemodellen där koden inte är fri. Denna licensmodell kostar pengar. Databasservern baserar sig på relationsmodellen och har både ett kommandotolkgränssnitt och ett GUI. Den använder sig av SQL som databasspråk, vilket till och med anges i servernamnet. [26] Oracle Oracle är en databasserver som likt de flesta andra servrar på marknaden baserar sig på relationsmodellen. Servern introducerades 1977 och har varit en av de största aktörerna på marknaden. Oracle brukar främst användas för tyngre databasdrivna applikationer då den har väldigt avancerade funktioner. Servern har ett stort plattformsstöd, där bl. a. UNIX, Windows, Mac OS X och Linux finns med bland de utmärkande operativsystemen. Databas-applikationen var den första kommersiella RDBMS som implementerade Linuxstöd. Oracle likt andra databasservrar använder sig utav SQL som språk för 24(106)

25 Teoretisk bakgrund att hantera databasen. [27,28] 2.3 Sidbeskrivningsspråk HTML HTML (Hyper Text Markup Language) är en standard samt ett språk som används för strukturering av text, ljud, bild och inbyggda objekt i exempelvis webbsidor eller e-post. Texten inkapslas i så kallade HTML- taggar som gör att texten, områdena i dokumentet samt innehållet får en struktur. Standarden HTML styrs från W3C (World Wide Web Consortium) som har hand om definitionen av nya standarder såväl som ansvar för modifiering av befintliga standarder. En annan organisation som har ännu bredare uppgift och ansvar är IETF (Internet Engineering Task Force). Deras uppgift är att ta hand om samt definera Internetteknologi. [29] Skapandet av HTML sker av författaren som bestämmer hur strukturen kommer att se ut medan läsaren i sin tur kan styra hur innehållet skall presenteras. Filerna som skapas i HTML-formatet sparas med filändelsen.htm eller.html. Dessa filer innehåller taggarn som webbläsaren använder för att tolka och därefter presentera. HTML innehåller fyra olika typer av taggar där varje tagg måste vara omringad med tecknen < >. Nedanstående punktlista beskriver de kategorier av taggar som finns. Strukturmärken: Beskriver textens storlek, t. ex. <h1>hello</h1> Presentationsmärkning: Beskriver stil på texten, t. ex. <i>kursiv stil</i> Hyperlänkanmärkningar: Används för att referera till en annan sida, webbplats eller på Internet, t.ex. <a href= >Ingenjörshögskolan</a> Interaktiva element: Nyttjas vid skapandet av knappar, listor samt interaktiva objekt. [30] De mest grundläggande taggarna som används vid HTML-kodning av anges nedan. <html> Varje HTML-sida börjar alltid med <html> -taggen. Det är den som talar om för webbläsaren att innehållet är ett dokuent i HTML-format. <head> Definerar information om dokumentet. 25(106)

26 Teoretisk bakgrund <title> Används för bestämning av titeln för dokumentet. <body> Definerar body -elementet. <h1>-<h6> Anger storlek på rubriker; från rubrik1 till rubrik6, där rubrik1 har största storleken på tecknen. <hr> Infogar en horisontell linje. <p> Definerar en paragraf. <br> Skapar en radbrytning. <img> Definerar en bild. <table> Används vid definition av en tabell. Taggarna ovan är början på en HTML tagg men varje tagg måste också avslutas. Om man skapar exempelvis en <table> -tagg skall den avslutas med en </table> -tagg i slutet av tabellen. Det talar om för webbläsaren att tabellen är slut och att webbläsaren kan fortsätta tolka resten av koden. [31] Skaparen bakom HTML heter Tim Barners-Lee som vid CERN (The European Laboratory for Particle Physics) uppfann HTML år Det möjliggjorde att man kunde utbyta samt presentera text och media i en struktur istället för fragmanterad text, ljud och bild. [32] CSS CSS (Cascading Style Sheets) används för att ändra utseende på en befintlig webbsida. Det skapades för att möta kraven från webbdesigners och användarna. CSS har funnits på webben sedan 1994 då CSS1-versionen skapades. Idag används version CSS2 som stöds av de flesta webbläsare på marknaden. Skaparna bakom CSS heter Håkon Wium Lie och Bert Bos. Genom att infoga en CSS fil i t. ex. ett HTML-dokument kan man bestämma utseende på webbsidan utan att behöva skapa nya taggar. Tekniken nyttjas för att anpassa dokumentet till skärmupplösning, färgdjup, installerade typsnitt samt hänsyn till datoryp. Så gott som alla dagens webbplatser använder CSS. För att infoga en CSS stilmall i ett HTML-dokuemnt kan man skriva följande: <link rel= stylesheet type= text/css href= style.css > Raden ovan specificerar att webbläsaren skall tolka filen som en stilmall av typen text/css. Sökvägen till CSS-filen skrivs efter href -deklarationen. Förutom att CSS styr layout på en webbsida, bidrar den till överskådligare HTML kod samt resulterar i en snabbare 26(106)

27 Teoretisk bakgrund laddning av sidan. [33] En CSS syntax består av tre delar: en selector, ett property samt ett value. Selector {property: value} Selector är vanligtvis en HTML-tagg som defineras medan property är attribut som skall ändras, där varje egenskap kan innehålla ett värde. Värdet och egenskapen är separerade med kolon och är omringande med måsvingar {} : body {color: black} Exemplet ovan betyder att body i dokumentet skall ha svart bakgrund. Om ett värde innehåller flera ord måste dessa skrivas inom citationstecken t. ex enligt nedanstående exemplifiering: p {font-family: sans serif } Om det är mer än en egenskap som skall defineras måste egenskaperna separeras med semikolon. Exemplet nedan visar hur man skriver en centrerad text i blå färg samt med teckensnittet Arial. p { text-align: center; color: blue; font-family: arial } Man kan även gruppera flera selectors genom att separera selectors med kommatecken: h1,h2,h3,h4 { color: red } Med en class selector går det att definera olika stilar för en och samma HTML-element. Om man exempelvis vill skapa hyperlänkar vars understrukning skall försvinna när man för över muskpekaren över länken, skrivs följande: a:link a:visited a:active a:hover { text-decoration: underline; color: blue} {text-decoration: underline; color: blue} {text-decoration: underline; color: red} {text-decoration: none; color: blue} Det går även att infoga kommentarer i CSS stilmallar för att förklara koden. Detta underlättar vid framtida kodbearbetning. Kommentaren ignoreras av webbläsaren. En CSS kommentar börjar med /* och slutar med */. En kommentar kan se ut enligt följande exempel: /* Detta är kommentar */ p {text-align: center; 27(106)

28 Teoretisk bakgrund /* En ytterliggare kommentar */ color: red} [34] XHTML XHTML (Extensible Hyper Text Markup Language) är en vidareutveckling av HTML. Språket är inspirerat av XML (Extensible Markup Language). Det nya alternativet erbjuder webbutvecklarna att designa och definera innehållet mer konkret; t. ex. boktitel, publikations datum och andra definitioner som liknar en databasstruktur istället för att presentera dem som kursiv, fet, blå text. Den största skillnaden mellan HTML och XHTML är standarden som bestämmer taggarnas utseeende. Medan HTML är mer förlåtande, är XHTML strikt i sin form. Dessa skilnader omfattar att: Alla taggar måste vara ihopparade eller har ett sluttagg />. Alla attribut skrivs inom citationstecken. Alla attribut måste presenteras som par: namn= värde Alla taggar och attribut måste skrivas som gemener. Attribut är egenskaper som förändrar beteende för en specifik tagg. Om man vill förändra bredden på en horisontell linje <hr> kan man bestämma dess bredd med attributen width ; t.ex. <hr width= 30% />. [35] Det finns tre olika versioner av XHTML 1.0 vilka motsvarar respektive HTML 4.01 versioner: XHTML 1.0 Strict är den versionen av XHTML som skiljer sig mest från HTML där många element och attribut som används i HTML 4.01 är borttagna. XHTML 1.0 Transitional är skapad för att underlätta övergången från HTML. Den tillåter att vissa element och attribut som inte används i XHTML 1.0 Strict kan användas; t. ex. <center>, <u>, <strike> och <applet>. XHTML 1.0 Frameset låter som namnet antyder skaparen att använda fremesets precis som i vanliga HTML. Vid kodning av XHTML är det viktigt att stänga alla taggar. Några av de mest förekommande felen som webbutvecklare gör är beskrivna nedan. Element utan sluttagg Fel: <br> Rätt: <br /> 28(106)

29 Teoretisk bakgrund Ej avstängning av element som inte är tomma. Fel: <p>paragraf 1.<p>Paragraf 2 Rätt: <p>paragraf 1.</p><p>Paragraf 2.</p> Utebliven specifikation av alternativ text för bilder. Fel: <img src= img/bil.jpg /> Rätt: <img src= img/bil.jpg alt= Volvo /> Skrivning av text direkt i body-delen av dokumentet. Fel: <body>välkommen till vår hemsida.</body> Rätt: <body><p>välkommen till vår hemsida.</p></body> [36] 2.4 Implementationer av HTTP-protokollet Servrar En webbserver är en nätverkstjänst som främst förmedlar HTML-filer till sina klienter med hjälp utav HTTP-protokollet. Klienter skickar så kallade HTTP Requests till servern där det efterfrågade anges. Servern skickar tillbaka ett svar med hjälp av ett HTTP Response. Det efterfrågade datat kan vara i princip vad som helst, men de mest vanliga typer av data är HTML-filer, CSS-filer samt bilder som sedan klienten tolkar. De vanligaste serverprogramvarorna beskrivs nedan. De utgör tillsammans en mycket stor andel av Internets webbservrar. [37] Apache Apache är i dagsläget den mest populära servern. Den baserar sig på open sourcemodellen och är därmed tillgänglig för alla att använda och modifiera. Programvaran baserades ursprungligen av koden till NCSA HTTPd 1.3 som en grupp människor via Internet började patcha, då utvecklingen av programvaran gick för långsamt. Dessa patchar koordinerades och till sist döptes projektet till Apache. Numera finns det inte kvar någon NSCA-kod i projektet då hela apache har skrivits om ifrån grunden i och med apache 2.x-serien. [38] Servern kan på grund av den öppna källkoden köras på ett stort antal operativsystem. Programvaran har därför också fått många utökningar genom ett modulsystem. Några mycket vanliga utökningar är PHP och SSL som moduler samt Perl och Python via CGI-interfacet. [39] Den organisation som adminstrerar Apacheprojektet heter Apache Software Foundation. Det skapades 1999 och är en ideell organisation med syftet att koordinera utvecklingen av apacheprojektet. En annan funktion som organisationen har är att skydda utvecklare mot potetiella legala tvister, samt se till att apachevarumärket inte missbrukas av företag. [40] 29(106)

30 Teoretisk bakgrund IIS IIS (Internet Information Services) är en servertjänst av Microsoft som hanterar ett flertal olika protokoll. De vanligaste av dessa är HTTP och secure HTTP, FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol) samt NNTP (Network News Transfer Protocol). [41] Serverfunktionaliteten för dessa protokoll finns att tillgå via något som kallas för ISAPI (Internet Service Application Programming Interface). Detta API anropas av IIS när t. ex. när en inkommande klient-pdu (Protocol Data Unit) tas emot. [42] ASAPI baserar sig på Three-tier arkitekturen, som baserar sig på principen om modularitet samt klient-serverteknologi. Med detta menas att användargränssnitt, affärslogik, datalagring samt dataåtkomst utvecklas i separata moduler. Syftet med detta är att minimera beroendet mellan de olika delarna, något som medför att man kan köra modulerna på separata plattformar. Ska man porta något till en annan plattform behöver man inte skriva om all kod utan endast t. ex. Användar-gränssnittet. En annan stor fördel med denna modulariserade arkitektur är att man kan skriva om delar av koden vid teknikskiften och därmed snabbt kan anpassa sig till nya förhållanden. [43, 44] IIS stöder förrutom vanlig HTTP-funktionalitet också tjänster för dynamiskt genererade webbsidor där ASP och ASP.NET är stödda av Microsoft. Tredjepartleverantörer har skapat stöd för PHP och Perl till serverprogramvaran. En nackdel med ISS är dock att den enda plattformen som stöds är Microsoft Windows. [45] Zeus Zeus är en webbserver som skapats av företaget Zeus Technology. Den finns till Linux och UNIX-plattformen och har ett välutvecklat stöd för virtualhosting samt möjligheten för att köra ett stort kluster. Programvaran har vunnit prestandatester och anses som en av de snabbaste på marknaden. Servertjänstens inriktning är stora webbsystem som har höga krav på prestanda, tillförlitlighet och säkerhet. [46] Zeus stöder ett stort antal olika gränssnitt. Det stöder CGI, FastCGI, NSAPI, ASAPI, SSI, Java servlets, Front page extentions samt PHP. I och med CGI-gränsnittet stöder det därmed också Perl. En nackdel är dock priset som börjar på 1700 dollar för en server. [47] 30(106)

31 Teoretisk bakgrund Klienter Internet Explorer Historia MSIE (Microsoft Internet Explorer) är en webbläsare som utvecklats av Microsoft. Webbläsaren är inbyggd i operativsystemet Microsoft Windows och är idag den mest använda webbläsaren på Internet. Den har sina rötter från Spyglass Inc. (version av Mosaic) som Microsoft licensierade Den första versionen av Internet Explorer lanserades i Augusti Den andra versionen i raden innehöll stöd för SSL, cookies, VRML samt Internet-nyhetsgrupper. Internet Expolorer 3.0 har sedan Windows 95 OSR2 (Operating System Release 2) varit inbyggd i operativsystemet och därmed blev gratis. Nyheterna i tredje utgåvan var bl. a. Internet Mail, News 1.0, Adressbok, Microsoft Netmeeting, Cascading Style Sheets samt stöd för Windows Media Player. Versionen 4 lanserades i Oktober 1997 med den största nyheten att man kunde aktivera Active Desktop, som kunde visa webbinehåll på skrivbordet. Ett år senare presenterades version 5 med stöd för XML/XSL, bi-directional text, ruby text samt CSS 1 och 2. Framtid Senaste versionen i skrivande stund är Internet Explorer 6 men utgåvan av Internet Explorer 7 är under utveckling och kommer att lanseras som testversion under sommaren Webbläsaren har under en tid tillbaka utvecklats även för andra operativsystem såsom för Macintosh, Solaris och HP-UX (Hewlett Packard UNIX). Utvecklingen för de övriga operativsystemen har avbrutits och fokusering ligger nu enbart på Windows. Användning av IE har fram till 2004 varit i stor majoritet och det är det fortfarande idag, dock börjar IE tappa andelar allt mer för allternativa webbläsare som Mozilla Firefox, Safari och Opera. Utgåvan av Internet Explorer 7 förväntas fungera under Windows XP, Windows Server 2003 SP 1 men framförallt för framtida operativsystemet som går under benämningen Longhorn som väntas bli klart år Finesser Inbyggda finesser som hittas i Internet Explorer är bl.a följande: Inbyggd FTP-klient. Förhandsgranskning av utskrift. Pop-up blocker (enbart för SP2). Automatisk uppdatering av tillägg. Stöd för tillägg såsom Flash, Shockwave och Jscript. 31(106)

32 Teoretisk bakgrund Möjlighet att acceptera eller avböja kakor (coockies). Webbstandarder Trots många år på nacken har Microsoft inte lyckats utveckla Internet Explorer så att det följer alla rekommendationer. HTML och CSS är fortfarande inte implementerade korrekt och är ofullständiga. Det saknas stöd för exempelvis <abbr> -taggen i HTML 4.01 standarden samt float-margins som är standard för CSS1. Vidare saknas det stöd för PNG-alfakanal som resulterar att transparansen visas i grått, vitt eller annan färg beroende vilken bildredigerare som har använts. Övriga bildformat som inte stöds fullt ut är JPEG där det saknas stöd för visning av progressiv JPEG. Internet Explorers stöd för XHTML är begränsat trots att XHTML 1.0 är bakåtkompatibel med HTML 5.0. Om en XHTML-sida är kodad med den nya MIME-typen application/xhtml+xml, känns den inte igen av IE, utan tolkas som en nedladdningsfil istället. Problemet löses genom att koda webbsidan på det gamla sättet med MIME typ text/html eller att manuellt redigera i Windows registret för att anpassa IE till de nya kraven. Passering av innehåll i HTTP 1.1 stöds inte fullt ut av Internet Explorer då webbläsaren inte kan specificera i sina anrop vilka MIME typer och encodings den kan acceptera. Med tanke på att Internet Explorer är utvecklad med stor feltolerans har det också bidragit att webbläsaren inte kan tolka webbsidorna som är kompatibla med W3Cs standarder. I värsta fall kan webbläsaren krascha på grund av detta. Några buggar är dock åtgärdade i IE för Windows XP. [48] Mozilla Firefox Mozilla Firefox är en plattformsoberoende webbläsare som är utvecklad av Mozillastiftelsen tillsammans med hundratals frivilliga utvecklare. Det var Dave Hyatt och Blake Ross som startade utvecklingen av Firefox projektet som ett experimentellt område under Mozilla projektet. Nuvarande ledare för utvecklingen av Mozilla Firefox är Ben Goodger. Webbläsaren använder XUL (XML User Interface Language) gränsnitts-språket, vilket gör det möjligt att kunna byggas ut med olika tillägg. Renderingsmotorn som används i webbläsaren är Mozillas egna så kallade Gecko layout engine. Första utgåvan av webbläsaren gick under namnet Phoenix som lanserades 1:a September Eftersom det redan fanns ett företag under samma varumärke som utvecklade BIOS-system, byttes namnet 32(106)

33 Teoretisk bakgrund till Mozilla Firebird. Det visade sig senare att Firebird var namnet på en databas-server och för att undvika förvirring byttes namnet till Firefox i December Första utgåvan (v. 1.0) av Firefox presenterades 9:e November Innan den lanserades fick den stor mediauppmärksamhet genom Forbes och Wall Street Journal. Reklamkampanjen resulterade i över 25 miljoner nedladdningar av webbläsaren på 14 veckor. Idag är Mozilla Firefox en av de mest använda open source-applikationerna. Framtid Internet Explorer är den mest utspridda webbläsaren på marknaden idag, men Mozillastiftelsen hoppas att webbläsaren kommer att stå för 10% av användningen på Internet i slutet av Målet som Mozilla har satt upp är enligt analysföretaget WebSideStory realistiskt och uppnåeligt. Finesser Firefox har finesser såsom tabbad bläddring, live bookmarks, popup blocker, stöd för web standarder samt en utbyggnadsfunktion som möjliggör förändring av funktionaliteten i webbläsaren. Tabbad bläddring innebär att användaren inte behöver öppna flera fönster för att surfa på flera olika sidor på Internet. Istället används flikarna som gör det möjligt för användaren att i ett och samma fönster befinna sig på flera olika sidor samtidigt. I övrigt finns det även möjligheter att installera Firefox på en USB-disk, MP3 spelare, extern hårddisk, ZIP enhet eller på en CDRW skiva. Projektet är utvecklad av John Haller och kallas för Portable Firefox. Standarder Mozilla Firefox stöder nästan alla W3Cs rekommendationer. Standarder som stöds av Firefox är HTML, XHTML, CSS, JavaScript, MathML (Mathematical Markup Language), XSL (extensible Stylesheet Language) och Xpath (XML Path Language). Dessutom har Firefox stöd för PNGs alfa kanal, vilket saknas helt i Internet Explorer. Förutom de mest vanliga rekommendationerna har Mozilla Firefox även stöd för CSS Level 3 som redan är implementerad i senaste versionen av webbläsaren. Firefox-teamet har jobbat vidare och utvecklat stöd för nya standarder som SVG (Scalable Vector Graphics), APNG (Animated Portable Network Graphics) samt Xforms. [49] Safari Historia Webbläsaren Safari är utvecklad av företaget Apple Computer, Inc. och är enbart kompatibelt med Apples egna operativsystem Mac OS X. Fram till Juni 2003 har Microsoft utvecklat Internet Explorer för Mac, men efter att Microsoft avbröt utvecklingen togs IE bort som standardwebbläsare ifrån Mac OS X. Första beta av Safari (v. 0.8) publicerades den 7:e Januari 2003 på Macworldkonferensen. Den 23:e 33(106)

34 Teoretisk bakgrund Juni 2003 blev Safari standardwebbläsare i Mac OS X med många finesser samt utvecklat stöd för webstandarder. Den interna layoutmotorn WebCore är lanserad under GNU Lesser General Public License som resultat av att Safaris kod för rendering av webbsidor är baserat på Konquerors KHTML-motor. Även andra delar av koden som Apple har förbättrat har släppts fritt, men källkoden för resten av webbläsaren finns ännu inte tillgänglig. Framtid Senaste versionen av Safari 2.0 är under utvecklig och väntas bli klart den 29:e April Senaste utgåvan kommer att lanseras tillsammans med Mac OS X v10.4 och kommer att få stöd för RSS (Really Simple Syndication eller Rich Site Summary) samt Atomläsare. Finesser Utvecklarna bakom webbläsaren Safari har lagt mycket krut på finesser och användarvänlighet. Bland innovativa funktioner finner man ett + - tecken vid adressfältet som gör det möjligt att lägga den aktuella webbsidan i bokmärken. Direkt i adressfältet finns det möjlighet att se vad webbsidan har för innehåll. Om man besöker en webbplats som skickar ut RSS visas en ikon som indikerar och informerar besökaren om att sidan visas som en RSS sida. Sedan finns det möjlighet att visa längden på en RSS sida, sortera den efter tid, datum, titel och källa direkt i webbläsaren. Den framtida versionen 2.0 kommer att erbjuda privat bläddring (som inte lagrar information om vilka sidor som har besökts), möjlighet att söka igenom bookmärken, möjlighet att arkivera och maila webbsidorna samt en hastighet som kommer att vara 1.8 gånger snabbare än i version I skrivande stund är Safari dessutom den snabbaste webbläsaren på marknaden enligt Apple. Standarder Safari är utvecklat med bra stöd för W3Cs rekommendationer. Stöd av PNG stöds fullt ut av Safari; både full alfa och gamma. Vidare stödjer Safari CSS, DHTML, DOM nivå1 och XML redan från betaversionen (Februari 2003). [50] Dynamisk webbfunktionalitet ASP ASP (Active Server Pages) är ett scriptspråk som skapats av Microsoft för att skapa dynamisk webbfunktionalitet till IIS. Det skapades 1996 och har sedan dess reviderats tre gånger. Den sista revideringen ledde till ASP.NET som numera håller på att ta över det gamla ASP (brukar benämnas som classic ASP ). Både ASP och ASP.NET har databasgränssnitt till olika databaser. Ofta används gränsnittet ODBC (Open DataBase Conectivity), som är ett standardiserat gränsnitt för att ansluta till DBMS. 34(106)

35 Teoretisk bakgrund Den senaste versionen av det gamla ASP (ASP 3.0) har sex stycken inbyggda objekt som är uppdelade efter användningsområde. Dessa är: Application ASPError Request Response Server Session Genom att anropa dessa kan programmeraren hantera serverns funktionalitet. De flesta ASP-sidor är skrivna i VBScriptspråket. Microsoft har även skrivit ett ytterligare språk som baserar sig på JavaScript som de kallar Jscript. Tredjepartsleverantörer har även skapat stöd för andra språk, bl. a. Perl. [51] ASP.NET är en vidareutveckling av ASP. Den största skillnaden är att ASP.NET inte längre är ett scriptspråk som översätts av servern medans det exekveras. Istället kompileras koden innan exekvering för att servern ska kunna arbeta mer effektivt. En annan stor skillnad mellan ASP och ASP.NET är att ASP.NET använder sig förutom de gamla ASP-språken också av andra språk, bl. a. Visual Basic.NET och C#. Då.NET består av ett stort antal kontroller och klasser finns ett stort utbud av funktioner man kan anropa. Utvecklingen av webbsidor sker i ett GUI där en stor del av koden automatgenereras. Programmeraren placerar ut ett objekt i ett fönster och skriver kod som hanterar dess funktionalitet. Alla versioner av ASP stöder endast Windowsplattformen. I likhet med alla andra Microsoftprodukter får man inte tillgång till någon källkod för programvaran. [52] CGI CGI (Common Gateway Interface) är ett gränsnitt som gör det möjligt att skapa dynamiska webbsidor. Med hjälp av detta gränsnitt kan man använda språk såsom t. ex. C, C++, Perl och Python. CGI är ett neutralt gränsnitt utan några preferenser. Gränsnittet är implementerat i webbservern som skapar en ny process för en anslutande klient och anropar därefter det efterfrågade programmet/skriptet. Processen avslutas efter en förfrågan. [53] Eftersom processkapandet är en tidskrävande åtgärd i ett operativsystem har FastCGI skapats. Det är en öppet tillägg som stöder de flesta webbservrar. Istället för att skapa och stänga processen efter varje request köas dessa för en klient. Detta påskyndar uppstarten, men en nackdel är dock att klienten måste 35(106)

36 Teoretisk bakgrund vänta på att alla föregående requests i kön exekverats klart innan svar kommer. En annan funktionalitet med FastCGI är att man kan utföra vissa åtgärder innan svar lämnas till klienten, exempelvis att skriva till en fil. [54, 55] JSP JSP (JavaServer Pages) är en Javabaserad teknologi som skapats av Sun Microsystems med syftet att kunna skapa dynamiska webbsidor. Den använder sig av så kallade Java Servlets för sin funktionalitet. En servlet är ett Javaprogram som webbservern anropar vid en klientförfrågan. Man kan se funktionaliteten som en vidareutveckling av CGI-gränsnittet med syftet att skapa en effektivare server samt tillhandahålla funktioner som t. ex. sessionshantering. Det finns en mängd olika implementationer av JSP till olika webbservrar. Dessa brukar benämnas som Servlet containers, vilket avser den del av webbservern som hanterar Java servlets som beskrivits ovan. De mest använda implementationerna listas nedan. iplanet En kommersiell implementation av Sun/Netscape. Jakarta Tomcat En opensourcebaserad variant som baserar sig på webbservern Apache. Jboss En kommersiell opensourcebaserad implementation av företaget Jboss Inc. Då företagets affärsmodell är inom serviceområdet är produkten fri att använda för alla. Websphere En kommersiell produkt av IBM. JSP-kod kompileras med hjälp utav en JSP kompilator till en servlet. En sådan skapas genom att man först konverterar JSP-koden till Javakod som i sin tur kompileras av en Javakompilator. Ett alternativ till detta är att JSP-kompilatorn kompilerar koden direkt till en färdig servlet. Kompileringen sker normalt då en specifik jsp-fil efterfrågas, men möjligheten att kompilera i förväg finns också av prestandamässiga skäl. [56,57,58] PHP PHP (PHP: Hypertext Preprocessor) är ett open sourcebaserat programmeringsspråk som främst används för att skapa dynamiska webbsidor. Det har en syntax som är ett mellanting mellan C, Perl och Java. I och med att det liknar de flesta vanliga programmeringsspråken anses det vara lätt att komma igång med. En ytterligare faktor som påskyndar inlärningen är att språket inte kräver någon typhantering för variabler eftersom detta sker internt i PHP. Språket har i och med version fem också möjligheter för objektorienterad programmering. [59] 36(106)

37 Teoretisk bakgrund Det finns tre olika användningsområden för PHP. Dessa beskrivs nedan. Server side scripting Genom en servermodul eller via CGI kan PHP användas tillsammans med en webbserver. Detta område är i dagsläget det största. Man kan via detta gränssnitt ta emot data ifrån en klient, bearbeta detta och returnera lämpligt data till klientens browser, oftast genererad HTML-kod. Med hjälp av inbyggda sessionsfunktioner kan man relativt snabbt skapa en webbsida som håller koll på information för en klient. Eftersom PHP dessutom har ett stort stöd för databaser, har en stor mängd funktioner (bl. a. datumhantering, regular expressions, komprimeringsfunktioner, hashfunktioner, stöd för kommunikation med LDAP, SNMP och POP3) kan man snabbt bygga ett avancerat webbsystem. Saknas stödet för ett nätverksprotokoll finns även möjligheter att skriva en egen implementation via socketprogrammeringsfunktioner som finns inbyggda i PHP. [60] Command line scripting PHP har också möjligheter att agera som ett vanligt skriptspråk i operativsystemet via gränsnittstypen SAPI (Server Application Programming Interface). Den implementation av SAPI som PHP stöder brukar benämnas som CLI (Common Line Interface) och är ett gränsnitt som fokuserar sig på skalprogrammering. Man kan beskriva detta som ett alternativ till bash, tcsh, perl eller motsvarande skriptspråk. Man kan med hjälp utav denna funktionalitet t. ex. skapa backupscript, installationsscript och utföra liknande administrativa uppgifter. [61] Programmering av GUI-applikationer Det går att skapa vanliga desktopapplikationer med hjälp av PHP tillsammans med ett library som kallas PHP-GTK. GTK+ (GIMP Tool Kit) är ett objektorienterat widgetlibrary som tillhandahåller funktioner för att rita i ett fönster samt eventhantering. Med detta avses uppritandet av menyer, text, inmatningsrutor och knappar som användaren navigerar med via musen och tangentbordet. [62] Om man har goda PHP-kunskaper och vill skapa ett GUI-program som använder egen- eller fördefinierade PHP-funktioner kan detta användningsområde vara av intresse. Dessutom finns det stora fördelar med en sådan implementation då PHP är plattformsoberoende och man kan då köra applikationen på alla plattformar. [60] Javascript Javascript är ett interpreterande språk som skapades av Netscape 1995 med syftet att erbjuda dynamisk funktionalitet till en webbläsare. I dagsläget har i princip alla browsers en inbyggd JavaScriptmotor som exekverar utpekad kod som angetts i HTML-filen man hämtat. I och med att funktionaliteten finns inbyggd i alla browsers kan man på ett plattformsoberoende sätt skapa dynamisk funktionalitet i browsern som ett serverbaserat scriptspråk inte kan skapa. 37(106)

38 Teoretisk bakgrund Med JavaScript kan förändra innehållet i en redan skapad HTML-fil. Man kan ändra sidans utseende beroende på hur användaren navigerar. Sådana funktioner kan exempelvis vara att skapa menysystem, ändra formulär beroende på hur användaren svarar på en formulärfråga, skapa nya browserfönster, skapa mouseover -effekter eller dölja objekt. [63] JavaScript har också objektorienterade möjligheter. Språkets syntax är något mellanting av C++, Java och Perl, vilket gör att de flesta programmerare relativt snabbt kommer in i språket. I likhet med PHP har JavaScript ingen manuell typhantering. För att minimera risken med virus och annan elak kod har JavaScript redan från början begränsats. Man kan via språket inte läsa eller skriva lokala filer eller använda något socketlibrary. Risken är annars stor att browsern kan exekvera kod ifrån någon server där data ifrån den lokala maskinen skickas iväg eller ändras av någon obehörig. Ett undantag från detta är dock att man via JavaScript kan hantera cookies. Javascript använder sig av DOM (Document Objekt Model) för att hantera objekt i browsern. Det är ett API som används för att representera objekt och för att kunna komma åt och hantera de element som finns i objektet. Dessa objekt och element representeras i en trädstruktur som börjar med roten och som sedan utmynnar i noder. Kombinationen av JavaScript och DOM brukar benämnas som DHTML (Dynamic HTML), vilket möjliggör bl. a. formulärmanipulation. [64] 2.5 Användarcentrerade system En användarcentrerad systemdesign är en design där tonvikt läggs åt att anpassa gränsnittet till den grupp av användare som ska använda systemet. Man brukar använda begreppet användbarhet som beskriver hur lätt ett system är att använda. Ett användbart system har med funktioner som löser användarnas verkliga problem, vilket inte alltid överrensstämmer med vad utvecklaren av programmet vill ha med i programvaran. Denna skillnad beror ofta på utvecklarens teknikfokus där man vill testa nya saker, eller då utvecklaren implementerar funktioner som skulle tänkas kunna användas vid avancerade tillämpningar. Huvudproblemet är dock att för lite tid ägnas åt användbarhet i systemets gränssnitt, vilket kan orsaka problem för användaren. Detta område brukar i Sverige benämnas som MDI (MänniskaDatorInteraktion) och är tvärvetenskapligt område som berör allt från psykologi, ergonomi och arbetsvetenskap till lingvistik och industridesign. MDI är ett ämne som studerar människans samspel med datorer och hur man med hjälp utav metodik kan förbättra sammarbetet. [65] 38(106)

39 Teoretisk bakgrund Enligt ISO-standarden från 1998 under namnet Guidance on Usability har man definierat usability (användbarhet) som följande: The extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use. [66] För att uppnå dessa målen måste man på något sätt kunna mäta dessa aspekter. Detta brukar genomföras genom en brukarstudie där man låter en utplockad skara människor (som representerar den verkliga användaren) genomföra en rad tester och svara på frågor. Nedanstående punkter exemplifierar en metodbeskrivning av dessa aspekter: Effektivitet Tid att utföra en uppgift. Tid att lära sig en uppgift. Antal allvarliga fel samt tiden för att rätta dessa fel. Ändamålsenligt Graden av ihågkommande efter en period. Procentuell beskrivning av hur stor andel av uppgifterna som slutförts framgångsrikt vid det första försöket. Procentuell beskrivning av andelen relevanta funktioner som använts. Tillfredsställelse Upplevd tillfredsställelse av tillfredställelsen och felhanteringen genom t. ex. formulärfrågor. Det finns en rad frågor man kan ställa under utvecklingsarbetet som hjälper till att definiera dels användarnas egenskaper och behov samt systemets implementation och uppföljning. Punktlistan nedan tar upp de viktigaste frågorna. Vilka är användarna? Vilken kunskapsnivå finns och hur mycket kan man tänkas utbilda dem under en begränsad tidsperiod? Vad är det användarna behöver kunna göra? Vilka bakomliggande problem löser dessa funktioner? Vilken del av funktionaliteten skall datorn utföra respektive vad ska användaren utföra? 39(106)

40 Teoretisk bakgrund Är det implementerade systemet förutsägbart? Kan en användare föreställa sig vad som händer när en specifik funktion anropas? Känner användaren igen sig? Kan personen använda tidigare kunskap och erfarenheter från organisationen eller omvärlden samt andra datormiljöer i navigering och utförande i det nya systemet? Är systemet konsekvent? Är gränsnittet utformat enligt samma principer i alla programmets delar? Går det att utföra mer än en uppgift i taget? Kan användaren effektivisera sitt arbete genom att köra flera trådar? Har användaren någon möjlighet att anpassa gränsnittet? Finns det möjligheter att använda ett gränsnittet som är fördelaktigt för personer med handikapp? Ger systemet feedback till användaren om vad som utförs i systemet? Detta är viktigt för att se till att användaren inte ska tro att systemet har låst sig när den befinner sig i en beräknings- eller väntefas. Hur bra är felrapporteringen? Kan en användare baserat på ett felmeddelande lösa problemet? Hur stora svarstider är det i systemet? Uppfattar användaren svarstiden som irriterande?, hur kan man minska på svarstiden? Till hur stor grad uppfattar användaren att systemet löser de definierade problemen? [65] 2.6 Datasäkerhet Definitioner Med ordet säkerhet avses ofta associationerna trygghet eller ofarlighet. Det är ett ord med väldigt bred definition, som kan användas i alla möjliga sammanhang. Den tekniska betydelsen av ordet avser en mer specifik betydelse. Den beskrivs som något som inte bara är säkert, utan också något som har skyddats. I datakommunikationssammanhang förtydligas detta enligt nedanstående definition, som är återgivet i sin engelska form för att förmedla oförändrade associationer. A condition that results from the establishment and maintenance of protective measures that ensure a state of inviolability from hostile acts or influences. 40(106)

41 Teoretisk bakgrund With respect to classified matter, the condition that prevents unauthorized persons from having access to official information that is safeguarded in the interests of national security. Measures taken by a military unit, an activity or installation to protect itself against all acts designed to, or which may, impair its effectiveness. [67] Det finns två huvudtyper av datasäkerhet; fysisk säkerhet samt informationssäkerhet. Den fysiska säkerheten beskriver de åtgärder som utförs för att skydda det berörda objektet från fysisk tillgång. Det kan i praktiken handla allt ifrån låsta dörrar till armerade vakter och larmsystem. Det finns tre huvudkategorier som definierar den fysiska säkerhetsaspekten. Dessa är beskrivna nedan. Användning av hinder för att frustrera samt fördröja angripare. Implementation av utrusting för att upptäcka en angripare. Denna kategori brukar handla om larm, ljusövervakning, vakter och övervakningskameror. Säkerhetsrespons. Metoder för att hantera en upptäckt angripare. God fysisk säkerhet uppnås om man kombinerar dessa kategorier. Syftet med denna säkerhetsaspekt är att fördröja angriparen så mycket att denne blir upptäckt, samt se till så att kostnaden för attacken överstiger dess potentiella värde. [68] Den andra säkerhetsaspekten, informationssäkerhet beskriver hur information regleras. I likhet med den fysiska säkerheten försöker man uppnå en säkehetsnivå som anpassar sig till värdet av det man försöker skydda. De huvudkategorier som behandlar detta område beskrivs nedan. Confidentiality. Information är endast tillåten för de som har behörighet att se den. Avlyssning av datatrafik (t. ex. IP-paket) är ett exempel som bryter mot denna princip. En metod för att försvåra denna avlyssning är genom att kryptera informationen mellan sändare och mottagare. Integrity. Dataintegritet anger att man kan lita på informationen. Den är har inte modifierats mellan sändare och mottagare. Dataintegritet kan t. ex. bli förstörd av medveten eller omedveten korruption innan informationen når mottagaren. Ett annat begrepp är källintegritet. Med detta menas att den som förmedlar information är den som som den 41(106)

42 Teoretisk bakgrund säger sig vara och att man kan lita på det påståendet. Ett exempel när källintegritet inte längre gäller är vid så kallad spoofning när man förfalskar sin identitet. Availability. Anger att information är tillgänglig när man efterfrågar den. Ofta kräver man att information ska kunna förmedlas i en tillräckligt hög hastighet så att användaren av informationen kan utföra sin uppgift. Ett exempel som bryter mot tillgänglighetsprincipen är så kallade Denial of Service -attacker där information förmedlas i alltför låg hastighet eller inte alls. Accountability. Med detta avses ansvarsskyldighet för information. Mottagaren får inte vägra eller förneka mottagandet av överrenskommen kommunikation. Sändaren får likt mottagaren inte heller vägra eller förneka sändningen om en överrenskommelse mellan parterna finns. Denna princip existerar för att skydda sändaren ifrån t. ex. omsändning av en vara när mottagaren vägrar eller förnekar mottagandet. Om en kund beställer en vara via Internet har kunden en ansvarsskyldighet enligt det informationsutbyte (ordern) som skett. Omvänt skyddas mottagaren då sändaren har en ansvarsskyldighet för den förmedlande informationen samt eventuell överrenskommelse. Principerna Confidentiality, Integrity och Availability brukar benämnas CIA och är en mycket vanlig term inom datasäkerhetsområdet. Ofta används det för att sammanfatta vad informationssäkerhet innebär. [69, 70, 71] När man talar om implementationen av ett säkert system brukar man tala om säkerhetstjänster, säkerhetstekniker samt säkerhetssystem. Dessa beskrivs nedan. Säkerhetstjänst En säkerhetstjänst är en teoretisk beskrivning av ett säkert system. Det beskriver en praktiskt implementation av ett säkerhetssystem. Begreppet existerar för att säkerställa att systemet man pratar om existerar i praktiken och inte enbart som ett hypotetiskt säkerhetssystem. Det belyser själva syftet med säkerhetssystemet. Exempel på säkerhets-tjänster är autentifikationstjänst (kontrollera att en användare är den som användaren säger sig vara), auktoriseringstjänst (behörighetskontroll) och dataintegritetstjänst. Säkerhetsteknik En säkerhetsteknik är en bred definition på en funktionalitet som används i ett säkerhetssystem. Det kan vara ett protokoll, en algoritm utför en säkerhetsfunktion, maskinvara eller en kombination av dessa. Ett exempel på säkerhetstekniker är hashfunktionen MD5 (Message Digest 5), krypteringsalgoritmen RSA (Rivest, Shamir och Adleman) 42(106)

43 Teoretisk bakgrund och DSA (Digital Signature Algorithm). Säkerhetssystem Ett säkerhetssystem är benämningen på ett system vars funktionalitet baserar sig på kombinationen av en eller flera säkerhetstekniker. Det är ibland svårt att skilja på en säkerhetsteknik och ett säkerhetssystem, men ett säkerhetssystem är alltid ett överordnat begrepp. Exempel på säkerhetssystem är PGP (Pretty Good Privacy), SSL (Secure Socket Layer) samt SET (Secure Electronic Transaction). [3] Databassäkerhet Detta avsnitt beskriver det vanligaste säkerhetsproblemet när det gäller databashantering för webbaserade informationssystem, vilket brukar kallas för SQL injection -attacker. Det är en metod som angripare använder där man t. ex. genom formulärinmatningar skriver in SQL-kommandon som sedan exekveras på servern. Man måste därför ta hänsyn till dessa aspekter när man skapar informationssystem för eliminera risken. Det finns två vanliga varianter på denna princip. Om man använder sig utav en WHILE-sats i SQL-frågan kan man lägga till extra villkorssatser till denna och därmed kunna ange annat data. Den andra varianten är att man stänger WHILE-satsen och exekverar fler SQL-satser efter den första. Nedanstående exempel baserar sig på följande databastabell: Timanställd *Username Password Förnamn Efternamn Adress Postnummer Ort Telefonnr Epostadress Figur 2-2: Tabellen Timanställd En mycket vanlig funktion i dagens webbaserade informationssystem är en funktion som skickar ett glömt lösenord till användarens epostkonto. Användaren skriver in sitt användarnamn i en inputbox och trycker på en knapp och får sedan lösenordet skickat. Följande exempel visar hur en angripare kan få användarens lösenord skickat till sin egna epostadress och därmed kunna komma in i systemet. Det baserar sig på ett informationssystem som inte filtrerar det inkommande datat utan använder datat direkt i SQL-satsen med citationstecken på båda sidor. 43(106)

44 Teoretisk bakgrund Nedanstående SQL-sats exekveras på servern när användaren matar in immanuel som användarnamn och trycker på knappen. Den visar hur systemet fungerar i frånvaro från illasinnade individer. SELECT Epostadress,Password FROM Timanstalld WHERE Username="immanuel"; Denna rad hämtar den e-postadress och lösenord som är förknippat med användarnamnet immanuel och skickar brevet baserat på dessa uppgifter. Ett av de första stegen för en angripare är att leta reda på ett användarkonto som denne kan bryta sig in i. När man skriver in ett användarkonto som inte existerar kommer ett felmeddelande. När det omvända inträffar beskrivs vilken adress informationen har skickats till. Detta kan angriparen utnyttja för att ta reda på vad en användare har för e-postadress. Angriparen skriver in följande i rutan och trycker på knappen: abc" OR Username LIKE "%adm% Denna rad översätts av servern till följande SQL-fråga: SELECT Epostadress,Password FROM Timanstalld WHERE Username="abc" OR Username LIKE "%adm% ; Denna rad hittade användaren admin i systemet och skickar detta till administratörens epostadress, admin@exempel.com. Dessutom anges denna adress på sidan. Angriparen skriver sedan följande i textrutan och klickar på knappen: abc" ; UPDATE Timanstalld SET Epostadress="angripare@exempel.com" WHERE Epostadress="admin@exempel.com Denna inmatning resulterar i följande SQL-sats: SELECT Epostadress,Password FROM Timanstalld WHERE Username="abc" ; UPDATE Timanstalld SET Epostadress="angripare@exempel.com" WHERE Epostadress="admin@exempel.com" ; Systemet svarar med ett felmeddelande om att användaren abc inte existerar. Men en ytterligare SQL-sats har dessutom utförts som ändrade användarens epostadress. Angriparen skriver in admin som användare och trycker på knappen, vilket skickar kontouppgifterna till angriparens e-postkonto. Denne kan därefter logga in via systemets vanliga inloggningsfunktion och stjäla affärshemligheter eller ändra i systemet. Denna metod skulle angriparen dock endast använda om syftet var att snabbt komma in, leta reda på affärshemligheter och sedan aldrig mera återvända. Detta eftersom lösenordet skickades till det riktiga adminkontot innan e-postadressen hann ändras, vilket administratören kommer att uppmärksamma och börjar utreda. Hade 44(106)

45 Teoretisk bakgrund angriparen varit intresserad av att ha tillgång till systemet en längre tid hade mer tidskrävande metoder använts som inte lika lätt hade uppmärksammats. Angriparen fick reda på tabellens namn Timanstalld samt attributet Epostadress genom att utnyttja databasserverns felhantering. Den förstnämnda kan erhållas genom att använda så kallade subselect där man exekverar en SELECT-sats innuti en annan. Attributet kan fås genom att bygga vidare på WHILE-satsen. Båda baserar sig på ANDnyckelordet, databasserverns felhantering samt upprepade försök med sannolika namn. De är inte beskrivna här på grund utav utrymmesskäl. Lösningen till problemen med SQL injection är att filtrera det data som användaren matar in. En effektiv metod är att omvandla tecknen ' och till \' samt \ som av användarens inmatning. Detta resulterar i att databasservern inte längre kommer att tolka dessa som en del av SQL-syntaxen utan som strängdata. [72, 73] 2.7 Standarder och rekommendationer W3C Tim Berners-Lee uppfann World Wide Web Han skapade även den första webservern httpd, den första webbläsaren samt redigeraren WorldWideWeb i oktober Han publicerade det primära formatet för webben genom att skapa den första versionen av HTML med stöd för hyper länkar. I Oktober 1994 grundade han World Wide Web Consortium (W3C) vid Massachusetts Institute of Technology, Labaratorium för datavetenskap [MIT/LCS] i sammarbete med CERN. [74] Uppdraget som W3C försöker fullfölja är att skapa protokollen och instruktioner för att försäkra uppväxten av webben. Den internationella konsortium World Wide Web Consortium (W3C) är en organisation med medlemmar i samarbete med allmänheten som jobbar för att skapa webb- standarder. Organisationen W3C utvecklar även mjukvaror, deltar i utbildningar och erbjuder ett öppet forum för diskussioner kring webben. Kompatibiliteten står högt på prioriterings listan hos W3C och webbteknologier måste vara kompatibla med varandra oavsett vilken hård- eller mjukvara man använder för att ansluta till webben. World Wide Web Consortium är stark knuten till internationella organisationer runt om i världen som deltar och bidrar till utvecklingen av W3C-standarder. Operationer som utförs av W3C administreras av MIT Computer Science och Artificial Intelligence Laboratory (CSAIL) från USA, den Europeiska Forsknings Konsortium för Information och Matematik (ERCIM) i Frankrike samt Keio Universitetet i Japan. W3C har kontor i fjorton regioner där ett av kontoren ligger i Sverige. [75] 45(106)

46 Teoretisk bakgrund Figuren nedan illustrerar hur W3Cs teknologiska stack ser ut. Web är med andra ord en applikation byggd på toppen av Internet. Figur 2-2: W3Cs teknologiska stack [76] Det mesta arbetet som sker under organisationen illustreras på bilden som visar infrastrukturen av webben. De fem olika områden längst ner representerar underlag av URI:er, HTTP, XML och RDF. Huvudfocuseringen är tillgänglighet, internationalisering, maskinoberoende samt kvalitet. Med hjälp av denna fokus kommer den framtida webben att bli en rubust, skalbar och adaptiv infrastruktur. [77] JPEG Formatet JPEG står för Joint Photographic Experts Group och är en komprimeringsmetod för bilder. Själva JPEG beskriver endast hur en bild transformeras och inte hur datat är inkapslat i något speciell lagrings- media. En annan standard i sammanhanget är JFIF (JPEG File Interchange Format) som skapats av Idependet JPEG Group och specificerar hur en fil skall produceras som är lämlig för datorlagring och överföring t.ex. via Internet. Kodning JPEG standarden erbjuder många möjligheter men det är bara några få som nyttjas. Processer som genomgås vid kodning av JPEG är omvandling av färgutrymme (Color Space Transformation), Downsampling, Discrete Cosine Transform, Quantization, Entropy coding, Compression ratio och artifacts samt Decoding. Standarden stöder både förstörande och icke förstörande kodning, där den förstörande är den vanligaste. En variant av JPEG som möjliggör gradvis sändning av koefficienter kallas progressiv JPEG. Den gör det möljgt att en klient kan se vad bilden föreställer innan alla 46(106)

47 Teoretisk bakgrund koefficienter har tagits emot. Användning JPEG lämpar sig bäst för fotografier samt målningar hellre än ritningar och grafiska ikoner. Vanligtvis utför JPEG bättre komprimering än andra förstörbara komprimeringsmetoder, vilket resulterar i hyggliga bilder även vid stark komprimering. Framtid JPEG 2000 heter den nya wavlet-baserade standarden som är skapad av JPEG kommitén. Den kommer eventuellt att ersätta den vanligaste JPEG standarden. Nackdelen med användning av wavelet är att många wavelet- algoritmer är patenterade, vilket gör det svårt eller omöjligt att distribuera mjukvarorna gratis. [78, 79, 80] PNG och GIF PNG (Portable Network Graphics) är ett format som utvecklades i början av Formatet har sedan det skapades blivit alltmer populärt, inte minst på webben och används som ett bättre och friare allternativ än GIF (Graphics Interchange Format). Till skillnad från GIF är PNG formatet patentfritt tack vare Unisys som släppte royalityfree patent licens till utvecklarna av fri mjukvara i August Sedan dess har PNGs popularitet vuxit med otrolig fart och idag används det flitigt på webben. Fördelarna med PNG är att den stödjer högre färgdjup och annan information än konkurenten GIF som enbart stödjer 256 färger. PNG är ett plattformsoberoende format och levereras som ett library med namnet libpng. Den metod som används för att producera den icke förstörande kodningen kallas eflation, och används eftersom den inte är patenterad. Jämfört med GIF så kan PNG prestera större komprimeringsgrad. I vissa implementationer kan dock val av filtermetoder bli felaktigt, vilket kan resultera i onödigt stora filer. När det gäller genomskinlighet ger PNG-formatet två olika typer av genomskinlighet: den binära genomskinligheten (där varje pixel är fullt transparent eller fullt ogenomskinlig) eller alfta kanal transparans där varje pixel har en 8-bit numeriskt värde som representerar delvis transparans. 47(106)

48 Teoretisk bakgrund Figur 2-3: Alphakanal med PNG Bilderna ovan visar en PNG bild med ett 8-bitars transparenslager (bild till vänster) och bilden till höger visar ett övertäckt lager på en shackrutig bakgrund. Stöd för alfakanaltransparensen i webbläsarna tog lång tid att implementera. Idag har den binära transparensen dock fortfarande större stöd än alfakanaltransparansen. Den populäraste webbläsaren på marknaden Microsoft Internet explorer har enbart stöd för den binära transparensen. Det fria alternativet till IE, Mozilla Firefox har fullt stöd för båda varianterna. PNG formatet tillåter upp till 48-bitar färger medan 32-bitar (RGBA) är fullt tillräckligt för de flesta användarna. Övrig information som kan lagras i en PNG fil är bakgrundsfärger, gammavärden och textuell information. [81] W3Cs rekommendationer PNG PNG hamnade på W3Cs rekommendationslista i oktober 1996 som reviderades i en ny version november Den sistnämnda versionen är även ISO standariserad med benämningen ISO/IEC 15948:2003 (E). MIME-typ för PNG är image/png och godkändes 14 Oktober Antal verktyg för skapandet av PNG ökar för varje dag då formatet stöds på många platformar. Populariteten kring formatet har till stor del bidragit implementation på så gott som alla moderna webbläsare. På PNGs hemsida går det att få reda på vilka webbläsare stödjer formatet. PNG rekommenderas att användas istället för GIF-formatet p.g.a PNGs licensmodell samt större funktionalitet. [82] XHTML 1.0 XHTML 1.0 var det första W3C rekommenderade efter HTML 4.01, HTML 4.0, HTML 3.2 och HTML 2.0. Standarden XHTML 1.0 är reformulerad av HTML 4 till XML samtidigt som den ärver stabilitet från HTML 4 och makten av XML. Syftet med att XHTML utvecklades var p.g.a. utökning av webbläsarnas platformar där stöd för TV, bilar, mobiltelefoner var önskvärda mål. XHTML 1.0 finns i tre olika typer nämligen XHTML 1.0 Strict, XHTML 1.0 Transitional, XHTML 1.0 Frameset. 48(106)

49 Teoretisk bakgrund Den förstnämnda XHTML 1.0 Strict rekommenderas när man vill ha en ren kodstruktur fritt från taggar som bestämmer utseendet på sidan. W3C rekommenderar användnig av CSS när man skall förändra exempelvis teckensnitt, färg och layout effekter. XHTML 1.0 Transitional är lättast att anpassas för den HTML-vane användaren. Det är små förändringar i en HTML kod som behöver förändras för att anpassas till XHTML 1.0 Transitional. Tillåtna taggar är body-element, bgcolor, text samt link-attributer. XHTML 1.0 Frameset rekommenderas då användningen av ramar på en webbsida förekommer. [83] CSS CSS har sedan första versionen varit rekommenderat av W3C. Den ger skaparen och läsaren mer kontroll över utseendet och layouten av HTML- samt XML-dokument. Genom användning av CSS kan man kontrollera: Radavstånd och längd Marginaler och indrag Teckensnitt, teckensnitt storlek och teckensnitt färger Bakgrundsbilder, fäger och mycket mera. Man kan infoga CSS innuti en HTML sida eller länka till en extern CSS som kan påverka ett antal olika webbsidor genom en enda CSS fil. Fördelarna med användning av CSS är att HTML kod blir mycket enklare att läsa och redigera. Det ökar läsbarheten av koden då HTML koden inte behövs för att bestämma utseendet på sidan och därmed blir många HTML taggar uteblivna. För att få en webbsida att se bra ut på olika skärmar i olika resolutioner används relativa mått. Flexibiliteten med CSS är att en enda fil påverkar en hel webbsida eller webbplats. Genom att redigera i en enda fil kan man bestämma utseende på alla sidor samtidigt. CSS stöds av många äldre webbläsare och det går att anpassa den för funktionshindrade människor. CSS är implementerad i de flesta webbläsare; Mozilla Firefox, Internet Explorer, Safari, Opera, Konqueror m.fl. [84, 85] ISO 8601 ISO 8601 är en internationell standard av datum och tid. Den nuvarande standarden är numera i sin tredje version, ISO 8691:2004 som ersätter den första versionen ISO 8601:1988 samt den andra versionen 8601:2000. Grundkonceptet för den här standarden är att ge möjlighet för användaren att precisera tid så exakt eller generellt som användaren önskar. Datumrepresentationen beskrivs i fallande storleksordning; från år till sekunder och millisekunder. 49(106)

50 Teoretisk bakgrund Datum kan beskrivas på tre olika sätt enligt ISO 8601: Kalenderdatum, ordinärt datum samt veckodatum. Kalenderdatum Kalenderdatum är det vanligaste formatet, vilket skrivs enligt formatet ÅÅÅÅ-MM-DD. Ordinära datum Ordinära datum är datum där man räknar dagar som passerar genom hela året. Dagen presenteras med tre tal som startar med 1:a Januari (001). Detta leder till att 1:a Februari exempelvis blir 032. Undandtag är 31:a December som beskrivs som 365 under vanliga år och 366 under skottår. Det ordinära datumets format skrivs ÅÅÅÅ-DDD. Veckodatum Veckodatum är datum där dagar fastställs i form av veckor. Veckorna skrivs med två tecken där första veckan på året börjar med 01. Formatet skrivs enligt formatet ÅÅÅÅ-VVV-D (2004-V16-22). ISO 8601 använder 24-timmarsbeskrivning för ett dygn. Det grundläggande formatet är ttmmss, men man kan även använda det korta alternativet ttmm. Om inga tidzoner har angetts när man anger tid antas det att man använder lokal tidzon. För att ange tidzon enligt UTC (Coordinated Universal Time) läggs ett stort Z på slutet av tidsformatet. Ett exempel på hur en UTC tidzon kan se ut visas nedan. 14:05:54Z eller 1405Z. [86, 87] 50(106)

51 Genomförande 3 Genomförande 3.1 Val av plattform och teknologier Systemutvecklingsmetod samt databasserver Systemutvecklingsmodell UML har valts som modell då den både rekommenderas inom den akademiska världen samt används inom företagsvärlden. Det är en modell som både är mångsidig och kraftfull och som underlättar för att skapa en god systemdesign. Genom att använda sig av visualiseringsverktyg (t. ex. klassdiagram, flödesdiagram, use casediagram m.m.) skapas en förbättrad förståelse av ett komplext system. Man kan dessutom använda UML i alla steg i utvecklingsprocessen. Modellen är därför en universell lösning som garanterar en konsekvent struktur av systemets design. Sådana egenskaper resulterade i detta vägval. Normaliseringsgrad Användningen av de tre första normaliseringsgraderna har valts. Detta eftersom det är de tre första som är de vanligaste och som påverkar databasmodelleringen i största grad. Data beskrivs därmed effektivt och logiskt korrekt. Databasserver Baserat på de generella målaspekter som definierades i avsnitt 1.5 har databasservern MySQL valts. En mycket viktig egenskap som sätter denna serverprogramvara i fokus är dess licensmodell. Denna modell gör programvaran mycket kostnadsmässigt effektiv, samt öppnar möjligheter för framtida utbyggnad. Med hjälp av den medföljande källkoden kan man kontrollera serverns säkerhet, korrekthet och robusthet. Dessutom finns möjligheten att förbättra eller lägga till egenskaper man är intresserad av. I och med licensmodellen är det också en plattformsoberoende lösning som fungerar i de flesta datorsystem. Den har också ett gott rykte om tillförlitlighet och prestanda. De andra beskrivna databasservrarna IBM DB2, Microsoft SQL Server samt Oracle uppfyllde de definierade målen sämre jämfört med MySQL. Det var främst de avsevärt högre kostnaderna samt licensmodellerna hos de andra varianterna som avgjorde beslutet att köra MySQL. Valet att välja en RDBMS framför en objektorienterad variant berodde främst på dess frekventa användning på webbhotellen (vilket ökar systemets kompatibilitet), samt på grund av att relationsdatabasservrarna är bättre dokumenterade. 51(106)

52 Genomförande Webbserver HTTP server Valet av webbserver baserades likt databasservern på de definierade målen. Även i detta fall spelade licensmodellen stor roll då det open sourcebaserade alternativet både är kostnadsmässigt effektivt, plattformsoberoende samt möjliggör granskning och förändringar av programvaran. Serverprogramvaran som valdes var Apache. Den har ett väl utvecklat stöd för tillägg i form av exempelvis skriptspråk (JSP eller PHP) samt möjligheten för secure socketlayer-funktionalitet. Eftersom programvaran dessutom är mycket vanlig på webbhotell samt har frekventa säkerhetsuppdateringar valdes programvaran framför IIS och Zeus Språk Serversidan Eftersom dynamisk webbfunktionalitet krävdes för att kunna lösa det definierade problemet valdes ett skriptspråk som tillägg till webbservern. Det språk som valdes var PHP eftersom licensmodellen är fördelaktig samt dess frekventa användning på webbhotellen. Valet stod mellan JSP och PHP som har likartade egenskaper och kompatibilitet med Apache. Båda tillhandahåller mångsidiga hjälpfunktioner som breddar deras användningsområde. PHP valdes dock på grund av sin goda dokumentation, dess stöd på webbhotellen samt en något bättre licensmodell. Ett annat serverbaserat språk som valdes var SQL för hantering av databasservern. Det valdes eftersom MySQL baserar sig på språket. Klientsidan Som språk på klientsidan valdes JavaScript eftersom det är det enda språk som stöds av alla browsers. Språket har dessutom egenskaper som stämmer överrens med de definierade målen, vilket bibehåller systemdesignens potential. Sidbeskrivningsspråk Eftersom de generella målen korrekthet och effektivitet definierades i avsnitt 1.5 valdes sidbeskrivningsspråket XHTML Strict 1.0 istället för HTML. XHTML är dessutom en rekommenderad standard av organisationen W3C. Versionen Strict valdes eftersom de generella målen definierar systemdesignens långsiktigt. I dagsläget är Transitional -versionen den vanligaste vars syfte är att stegvis gå mot den slutliga XHTML-versionen, dvs. det tänkta språket i framtiden. Med detta som motivation ökar man sannolikheten för att sidan även i framtiden ska fungera med alla webbläsare. I kombination med XHTML Strict 1.0 har CSS valts. XHTML-delen beskriver sidans struktur medan CSS beskriver det grafiska utseendet. Detta vägval är baserat på organisationen W3Cs rekommendation om att man helt och hållet bör använda CSS för det grafiska utseendet. Man kan på så sätt beskriva flera webbsidors utseende via en gemensam CSS-beskrivningsfil. 52(106)

53 Genomförande Komprimeringsformat och datarepresentation PNG PNG har valts framför GIF främst på grund utav dess licensmodell och bättre tekniska egenskaper. Formatet har bättre stöd för 24 bitars färgrepresentation, alphakanalstöd med variabel transparensnivå samt högre komprimeringsgrad. Dess tänkta syfte är att hantera enklare bilder med få färgvariationer (ej fotografier). Eftersom formatet har fått stort webbläsarstöd finns det inte längre några fördelar med GIF och därför valdes formatet. JPEG JPEG har valts som format för fotografier då det är ett standardiserat format som alla browsers stöder. Formatet har dessutom en mycket hög komprimeringsgrad vilket skapar en effektiv kommunikation mellan klient och server när det gäller överförandet av komplex bildinformation. Icke progressiv JPEG har valts som format eftersom den progressiva algoritmen inte stöds av alla browsers. ISO 8601 ISO 8601 valdes som det generella datumformat som skulle användas i all datumbeskrivning. Valet baserade sig på W3Cs rekommendation där ett entydigt format förespråkades. Man undviker därmed tolkningsproblemen som kan uppstå vid användningen av andra format. Formatet har också en programmeringsmässigt tilltalande struktur där alla månader respektive dagar beskrivs med två siffror. Detta ansågs vara fördelaktigt vid utformandet av systemets algoritmer. 3.2 Systemdesignen Databasmodellering Databasmodelleringen var ett resultat av både teoretiska och praktiska aspekter. En del attribut lades till eller beskrevs annorlunda för att undvika onödigt komplexa SQL-frågor (dubbla INNER JOINS i samma fråga). Två exempel på detta var en indexerande variabel i tabellen Timanstalld samt att beskriva ett företagsnamn i tabellen Uppdrag utan att referera till tabellen Kund. Variabeltyper och dess storlek definierades enligt prestandamässiga aspekter samt principen om flexibilitet. Den flexibla egenskapen, dvs. att inte begränsa attributen alltför mycket fick högre prioritet än prestandafaktorerna som ansågs vara relativt försumbara i jämförelse. Tabellernas namn samt attribut namngavs på svenska fast utan å,ä och ö. Istället användes a och o för att garantera kompatibiliteten mellan olika versioner av MySQL. Detta eftersom det fortfarande förekommer miljöer där inte ISO eller Unicode stöds. Ibland används engelska uttryck som attributnamn för att inte förmedla mindre använda associationer och därmed undviker man förvirring. För att öka läsbarheten påbörjas varje namn eller bokstaven efter skiljetecken med versalt tecken. I enlighet med UML beskrivs alla tabellnamn och attribut i singularis. 53(106)

54 Genomförande Databasdesignen baserade sig också på en del inbydda funktioner i servern. Den viktigaste av dessa var krav på inmatning för vissa attribut (utöver den primära nyckeln) samt defaultvärden med datatypen enum. Nedan beskrivs de tabeller som definierades samt konfigureringen av de nämnda funktionerna. Syftet med vissa attribut förtydligas dessutom. Tabell 3-1: Foretagsuppgift Attribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande beskrivning ForetagsuppgiftID tinyint(3) unsigned JA JA 0 Foretagsnamn Varchar(20) JA NULL Adress varchar(20) JA NULL Postnummer Varchar(10) JA NULL Ort varchar(20) JA NULL Telefonnr Varchar(15) NULL Mobiltelefonnr Varchar(15) NULL Epostadress Varchar(50) NULL Organisationsnr Varchar(20) NULL Momsregnr Varchar(20) NULL Bankgiro Varchar(15) NULL Plusgiro varchar(15) NULL Arbetsgivaravgift tinyint(3) unsigned JA 0 Inkomstskatt 0 tinyint(3) unsigned JA Primär nyckel Nya namnet på Postgiro Tabell 3-2: Kund Attribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande beskrivning KundID Smallint(5) unsigned JA JA 0 Primär nyckel Foretagsnamn varchar(20) JA NULL Adress varchar(20) JA NULL Postnummer varchar(10) JA NULL Ort varchar(20) JA NULL Kontaktperson varchar(20) NULL Telefonnr varchar(15) NULL Faxnr varchar(15) NULL Mobiltelefonnr varchar(15) NULL Avdelning varchar(20) NULL Epostadress varchar(50) NULL 54(106)

55 Genomförande Tabell 3-3: Timanstalld Attribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande beskrivning Username Varchar(50) JA JA Password varchar(20) JA NULL Skapades Date NULL TimanstalldID smallint(5) unsigned NULL Personnummer varchar(13) JA NULL Fornamn varchar(20) JA NULL Efternamn varchar(20) JA NULL Adress varchar(30) NULL Postnummer varchar(10) NULL Ort varchar(20) NULL Telefonnr Varchar(15) NULL Mobiltelefonnr Varchar(15) NULL Epostadress varchar(50) JA NULL Primär nyckel Hjälpvariabel för indexering Krävs av epostfunktioner Tabell 3-4: Uppdrag Attribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande beskrivning UppdragID smallint(5) unsigned JA JA 0 Primär nyckel Datum date JA ISO 8601 Starttid tinyint(3) unsigned JA 0 Sluttid tinyint(3) unsigned JA 0 Foretagsnamn varchar(20) JA Beskrivning text NULL Kommentar text NULL T_Dag_Starttid varchar(4) JA T_Dag_Sluttid varchar(4) JA T_Kvall_Starttid varchar(4) JA T_Kvall_Sluttid varchar(4) JA T_Natt_Starttid varchar(4) JA T_Natt_Sluttid varchar(4) JA T_Dag_Lon smallint(5) unsigned JA 0 T_Kvall_Lon smallint(5) unsigned JA 0 T_Natt_Lon smallint(5) unsigned JA 0 55(106)

56 Genomförande Tabell 3-5: Uppdrag_Medlem Attribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande beskrivning UppdragID smallint(5) unsigned JA JA 0 Del av primär nyckel TimanstalldID smallint(5) unsigned JA JA 0 Del av primär nyckel Rapporterat enum('j','n') JA n Avgör rapporteringsstatus Kommentar text NULL Paminnelse enum('j','n') JA n Starttid varchar(4) NULL Sluttid varchar(4) NULL Rast1_Starttid varchar(4) NULL Rast1_Sluttid varchar(4) NULL Rast2_Starttid varchar(4) NULL Rast2_Sluttid varchar(4) NULL Rast3_Starttid varchar(4) NULL Rast3_Sluttid varchar(4) NULL Avgör påminnelsestatus Tabell 3-6: Log Attribut Variabeltyp Inmatningskrav Nyckel Defaultvärde Förtydligande beskrivning LogID int(10) unsigned JA JA 0 Primär nyckel Username varchar(20) JA NULL Datum date JA NULL ISO 8601 Timestamp int(10) unsigned JA NULL UNIX timestamp IP varchar(15) JA NULL DNS varchar(100) NULL UserAgent varchar(200) NULL Browserinformation Typ smallint(5) unsigned NULL Anger typen av logdata Beskrivning Varchar(100) NULL Klassdiagram för databasmodelleringen finns beskrivna i bilaga 2. 56(106)

57 Genomförande Användargränssnitt Målgrupp och utrustning Den målgrupp som systemdesignen baserar sig på är personer som känner till företagets verksamhet. Eftersom företaget baserar sin verksamhet på studenter kan man utgå ifrån en viss nivå av datorkunskaper. Med detta avses åtminstone kunskaper om grundläggande hantering av operativsystem, webbläsare och elektronisk post. Eftersom användarnas datorutrusting med all sannolikhet kan variera har en systemdesign valts som garanterar hög kompatibilitet. Den lägsta upplösning som systemet fungerar med är därför 800x600 pixlar. Utformningen av gränssnittet Färger och text har valts som uppnår goda kontraster mellan förgrund och bakgrund, något som maximerar läsbarheten. Färger som människan uppfattar reflexmässigt har valts för felmeddelanden. Målet med det grafiska gränssnittet är att det skulle vara självförklarande. Inga hjälpfunktioner ska därmed behövas. Om det skulle behövas skulle i så fall gränssnittet vara felaktigt utformat. Hänsyn togs för att garantera visuell feedback och att göra systemets utformning konsekvent. Uformningen baserade sig också på principen om igenkännbarhet och förutsägbarhet, dvs. en struktur och funktionalitet som liknade andra datorsystem. Möjligheten att effektivisera med hjälp av parallella uppgifter undersöktes. Det visade sig att den enskilda användaren av logiska skäl alltid arbetade sekventiellt eftersom en senare uppgift var beroende av en föregående. Principen om parallell funktionalitet existerar dock om man ser systemet ifrån ett helhetsperspektiv. Ett flertal användare och administratörer kan arbeta samtidigt och därmed maximera effektiviteten. Vissa moment i användarens arbete effektiviserades genom att gruppera och möjliggöra ett flertal operationer på en gång. Ett exempel på detta är att användaren kan rapportera alla aktuella uppdrag på en gång (på samma sida). Denna funktionalitet minskar antalet knapptryckningar samt ökar överskådligheten av den aktuella uppdragsperioden. Tid ägnade också åt att fundera över användarens möjligheter att kunna påverka gränssnittet samt dess uppfattning av gränssnittet. Ett område som togs upp var om felmeddelanden skulle visas med röd färg. Den röda färgen är den färg som människan ur ett biologiskt perspektiv uppfattar snabbast, vilket har medfört till ett sådant beslut. Men eftersom det finns ca färgblinda i Sverige kunde en sådan färg kunna orsaka problematik. Det beslutades därför att en stark röd färg skulle användas med mycket hög kontrast mellan förgrund och bakgrund. Kombinationen grön bakgrund och röd förgrund undveks helt och hållet eftersom det är ett vanligt problem. Om tid fanns beslutades det även att användaren skulle kunna välja en annan färg för systemets felmeddelanden. 57(106)

58 Genomförande 3.3 Utveckling av systemet Skapandet av grafik Systemets grafik skapades främst i programmet Adobe Photoshop. Detta eftersom programmet har mycket välutvecklade designverktyg samt god lagerhantering. Menygrafiken skapades helt i programmet. Det format som valdes för knapparna var PNG eftersom bildinformationen har få färgvariationer och då formatet resulterar i små filer utan komprimeringsartefakter. I vissa fall användes programmet GIMP (GNU Image Manipulation Program) för att skapa enklare grafik. Valet var främst pga. effektivitets-skäl då utvecklingsplattformen i största grad var Linux. Systemets kalendergrafik skapades i programmet med PNG-som format Programmeringsfasen Programmeringsprinciper De valda sidbeskrivningsspråken XHTML och CSS användes under hela programmeringsfasen av systemet i kombination med PHP och JavaScript. Med PHP genererades XHTML-kod som sedan även kunde behandlas med JavaScript och skapa DHTML-funktionalitet. Ett medvetet val om att minimera användningen av JavaScript togs där språket endast skulle användas där det var tvunget. Detta vägval baserade sig på principen om att sköta all felkontroll på serversidan istället för på klientsidan. Hade man kontrollerat och begränsat variabler på klientsidan hade en potentiell angripare kunnat skriva ett browserprogram som inte följer all felkontroll och därmed kunnat utsätta servern för oönskade situationer. Sådana situationer skulle kunna ha medfört till sämre säkerhet eller tillförlitlighet. JavaScript användes för att förändra innehållet i informationslistor på sidan baserat på användarens agerande. Kodsekvenser som utförde uträkningar med återanvändningsbara egenskaper placerades i en klassfil (classes.php) som anropades av olika php-filer när dess behov krävdes. Se bilaga 4 för mer information. Koden för systemets olika delar uppdelades baserat på typ av användare. Inkluderingsfiler, klasser samt bilder fick sina egna kataloger. Eftersom den tänkta servern var ett webbhotell med begränsade rättigheter beslutades det att databasanslutningsfunktioner med tillhörande lösenord skulle placeras i varje php-fil istället för en inkluderingsfiler. Det antogs att möjligheten att placera de hemliga uppgifterna utanför www-roten inte var en självklarhet. Eftersom webbservern alltid översätter PHPfilerna var informationen skyddad. En mer flexibel lösning hade varit att placera databasanslutningsfunktionen i en enda inkluderingsfil som varje phpfil inkluderade. Problemet med denna lösning var att dess 58(106)

59 Genomförande konstruktion inte innehöll en funktion som terminerade databasanslutningen. En angripare hade därför kunnat anropa phpfilen och skapat så många handtag på servern att ett maxvärde uppnåtts och därmed satt servern ur spel. Verktyg Den editor som främst användes för skapandet av systemet var GNU Nano som användes på de plattformar systemet utvecklades på. Tillsammans med denna editor användes främst programmen Firefox och Thunderbird för att testa webb och e-postfunktionaliteten. Dessutom testades sidan i Internet Explorer, Opera och Konqueror (som Safari bygger på) för att kontrollera att sidorna såg ut likadant överallt. Varje generarad SQL-sats testades i MySQLs consolebaserade administreringsverktyg. Detta var en ytterligare kontroll om man tänkt rätt både ur kodmässigt och logiskt perspektiv. W3Cs valideringsfunktioner anropades ofta för att kontrollera att sidbeskrivningsspråken var korrekt kodade. Det förekom tillfällen då dynamiskt genererad kod fungerade väl i vissa situationer men inte i andra. Det var därför viktigt att testa sidorna för de situationer som hypotetiskt skulle kunna inträffa. Datasäkerhet En annan aspekt var datasäkerheten. Den dynamiska delen av SQLkommandona beskrevs i PHP med två stycken \ tecken, vilket tog bort risken för SQL-injection. Tid lades dessutom till att kontrollera att detta verkligen fungerade i praktiken, vilket det gjorde. PHPs inställning magic quotes (som normalt är aktiverat) översätter alla quote-tecken till escapesekvenser, vilket minimerar risken ytterligare. Dessutom anropades av principsak mysql-funktionen som endast utförde ett enda SQL-kommando. Detta för att minimera den potentiella skadan för hypotetiska misstag i koden. För alla sidor i systemet placerades det en användarkontroll baserat på användarens session. Var inte användaren behörig (vanlig användare eller inte ens inloggad) visades systemets inloggningssida istället. Mailfunktioner Eftersom kompatibilitet och plattformsoberoende var en viktig aspekt under systemdesignen fattades beslutet att skriva en egen SMTPklient. Detta för att inte skapa ett onödigt beroende av serverns egenskaper. Det enda som systemet skulle kräva av servern var PHPstödet. I UNIX-miljö brukar ofta programvaran sendmail användas, medan i Windows används IIS. För att garantera att systemet alltid skulle fungera på alla plattformar oavsett serverns konfiguration skapades en sådan funktionalitet med hjälp utav PHPs socketfunktioner. Koden för denna funktion finns beskriven i bilagan som beskriver alla klasser (Bilaga 4). 59(106)

60 Genomförande Denna funktion baserade sig på base64-kodat data och MIMEextensions för att garantera dels kompatibelitet mellan mailservrarna samt för mailklienterna. Som ett extra tillägg utöver vanlig textformat valdes HTML för att ge ett mer sofistikerat användargränssnitt för de användare som hade stöd för formatet i epostläsaren. Epostfunktionen användes dels för att skicka glömda lösenord till användare och dels för att påminna användare om att uppdragsrapportering inte skett. Om inte användaren rapporterar ett uppdrag inom en vecka efter det datum som uppdraget utfördes, kommer ett sådant brev att skickas. Ett beslut fattades om att endast ett sådant brev skulle skickas. Det antogs endast vara undantagssituationer när en användare inte rapporterar trots påminnelse och att det inte skulle hjälpa att skicka ett ytterligare brev. Informationen om ett brev skickats eller ej hanterades via attributet Paminnelse i tabellen Uppdrag_Medlem. 3.4 Testfas Metod Testfasen handlade att kontrollera om systemet fungerade i alla tänkbara situationer. Genom att metodiskt gå igenom alla hypotetiska situationer säkerställde man att systemet fungerade som det skulle. Denna fas ansågs vara mycket viktig för att garantera systemets definierade mål. För ett tidsbegränsat projekt är sannolikheten stor att någon del avviker från de uppsatta målen. Med insikt om detta fattades beslutet om att ägna tid åt att definiera och tillämpa en testmetod. Ett verktyg för denna fas var att skapa scenarion baserat på hypotetiska situationer där användare utförde en aktivitet i systemet. Syftet med detta verktyg är att återspegla själva användningen av systemet. För att garantera korrektheten för sidbeskrivningsspråken används webbaserade valideringsverktyg som finns tillgängliga på W3Cs webbplats. I kombination med detta verktyg kontrolleras själva sidans design i olika browsers på olika plattformar för att garantera att allting ser ut enligt det definierade gränssnittet. Ett kompletterande verktyg var att granska den bakomliggande koden i systemet. Syftet var att observera den uppnådda graden av de generella egenskaperna som definierades i avsnitt 1.5. Två mycket viktiga egenskaper att kontrollera var korrekthet och datasäkerhet. Genom att granska koden med syftet att hitta felaktigheter eller potentiella risker som en angripare skulle kunna utnyttja garanterar man en viss nivå av målen. 60(106)

61 Genomförande Genomförande och resultat Scenarion Alla sidors funktionalitet testades genom att utföra de aktiviteter som fanns i varje scenario. Felkontroller granskades i kombination med dess definition i databaskonfigureringssteget. Två felaktigheter upptäcktes på kalendersidan som visades under vissa specifika omständigheter. Problemet uppenbarade sig när ett uppdrag började en söndagkväll och slutade på måndagen. En annan felaktighet inträffade samtidigt och resulterade i en felaktig visning av kalendern. Valideringsfunktioner För att kontrollera att sidbeskrivningsspråket tillämpats enligt den valda standarden XHTML Strict 1.0 användes W3Cs webbaserade valideringsfunktion samt dess motsvarighet för CSS. Det visade sig att menysystemet inte var helt kompatibelt med XHTML Strict. Detta resulterade i en hel omskrivning av menysystemet där man baserade sig på a-taggen i kombination med div-taggen. Valideringsfunktionen klagade också på några br-taggar som placerats utan div-taggar, något som rättades till relativt snabbt. Ett litet större problem existerade på rapporteringssidan för de timanställda. Om inget uppdrag behövdes rapportera genererades sidan felaktigt. Den halvfärdiga tabellen resulterade i ett felmeddelande. Problemet åtgärdades genom att endast generera tabellkod om det fanns något att rapportera. Eftersom systemdesignen förespråkade plattformsoberoende kontrollerades funktionaliteten och sidbeskrivningens tolkning i olika browsers på olika plattformar. Det visade sig att systemet såg annorlunda ut i Internet Explorer jämfört med ett flertal andra browsers. Problemet var CSS-relaterat och åtgärdades till största grad efter en tids felsökning. Systemet såg mycket snarlikt ut på olika plattformar. Det förekom dock en viss avvikelse då fontrepresentation och utformning av inmatningsrutor m.m. var annorlunda utformat. Kodgranskning Systemet kod kontrollerades med syftet att hitta felaktigheter och potentiella risker. Tid ägnades åt att kontrollera att första steget i varje php-fil hanterade potentiella angripare. Om en obehörig individ försökte komma åt en php-fil redirectades individen till inloggningssidan. Felhantering i systemet hanterades bl. a. genom granskning av innehållet samt genom att undvika potentiella SQL injectionförsök med citationstecken i SQL-frågan. En del av felhanteringen baserade sig på hur MySQL-servern betedde sig. Eftersom systemdesignen valt den databasservern som plattform ansågs det inte som något praktiskt problem. Det spekulerades dock om eventuella säkerhetsproblem om andra databasservrar användes. Men eftersom en mycket stor del av 61(106)

62 Genomförande programkoden var bunden till MySQL-funktioner ansågs problemet vara försumbart då en hel omskrivning av systemet krävdes vid alternativa vägval. Några mindre felaktigheter hittades i koden och löstes. Det förekom också en del bortkommenterade rader som använts vid tidigare kodning, som togs bort. Tid ägnades också åt att kontrollera att de MySQL-handtag som skapats också stängdes. Totalt sett utförde systemet de steg som definierats. Det förekom några felaktigheter och problem, men de löstes. Felhanteringsfunktioner ansågs dock i vissa fall vara lite primitiva. Om tid fanns skulle dessa förfinas. Grundfunktionaliteten uppnåddes dock med de existerande funktionerna. En annan aspekt med förbättringspotential var att systemet inte tillämpade det objektorienterade tankesättet i största möjliga grad. Om tid fanns skulle en sådan väg kunna ge en bättre systemdesign samt en effektivisering av systemet. 62(106)

63 Resultat 4 Resultat 4.1 Personalhanteringssystemet Syftet med detta arbete var att lösa de definierade problemen och uppfylla de mål som definierats. I praktiska ordalag innebar detta ett webbaserat personalhanteringssystem där uppdragshantering och löneberäkningar utfördes. Systemet som var uppdelat i tre delar: administrativ del samt del för timanställd. Dessa länkades ihop via en sida tillgänglig för alla på Internet med inloggningsfunktion. Tonvikten i systemet var den administrativa delen där mest funktioner implementerades. Dessutom var komplexiteten naturligt större i den administrativa delen. Den timanställdas roll i systemet var endast att rapportera uppdrag. CV-funktionalitet prioriterades bort av tidsskäl Systemets öppna del Den öppna delen av systemet bestod av fyra delar och dess funktionalitet beskrivs nedan. Inloggningssida (startsida) Skapa användare Skicka glömt lösenord till användarens e-postadress. Information om användningen av sessionscookies. Delen fick en egen katalog vid namn init för att särskilja koden från resten av systemet. Epostfunktionaliteten baserade sig på systemets definierade klass Mail, som beskrevs i avsnitt 3.2 i rapporten. I enlighet med svensk lagstiftning finns det en sida i systemet som talar om att cookies används. Den ger en översiktlig beskrivning av lagen samt återger systemets användning av sessionscookies. Länkar refererar till ytterligare information om ämnesområdet. Sidan är tillgänglig på alla sidor i den öppna delen av systemet. 63(106)

64 Resultat Nedan visas några screenshots var syfte är att beskriva det implementerade användargränssnittet. Figur 4-1: quickmatch.php Figur 4-2: new_user.php 64(106)

65 Resultat Figur 4-3: password.php Figur 4-4: cookies.php 65(106)

66 Resultat Systemets administrativa del Den administrativa delen består förrutom startsida och logoutfunktion utav sju separata delar. Dessa kan bl. a. hantera uppdragshantering och löneberäkningar. Information i systemet går vanligtvis att ändra via en ändrafunktion. De administrativa delarna är beskrivna nedan. Företagsuppgifter Lagrar information om företaget samt arbetsgivaravgift och inkomstskattsats. Timanställda Lagrar uppgifter om timanställda. Möjlighet för att söka samt ändra uppgifter finns. Kunder Lagrar uppgifter om kunder. En ny kund kan registreras via undermenyn Lägg till. Även funktioner för ändra samt söka finns. Uppdrag Uppdrag skapas via undermenyn Lägg till. Det går också att visa och ändra nya uppdrag. Sökfunktion baserat på årtal och vecka finns. Arbetstider Denna del är en kalender som veckovis visar vilka uppdrag som finns och deras status med olika färger. Delen har två undernivåer, en som visar rapporteringsstatus och en ytterligare nivå som visar rapporteringsstatus på individnivå. Ekonomi Sammanställer månadsvis alla uppdrag. Individuell funktion finns för att beräkna en timanställds lön under en specifik månad. Detaljerad information finns om uppdrag och beräkningar för den sistnämnda funktionaliteten. Log Denna sida beskriver systemets aktiviteter rörande systemets konton och potentiella säkerhetsrisker. 66(106)

67 Resultat Syftet med nedanstående screenshot är att visa varje dels funktionalitet samt gränssnittsmässiga utformning. Bildsekvensen går från vänster till höger enligt systemets menysystem. Figur 4-5: company.php Figur 4-6: employees.php 67(106)

68 Resultat Figur 4-7: customers.php Figur 4-8: assignment.php 68(106)

69 Resultat Figur 4-9: calender.php Figur 4-10: economy.php 69(106)

70 Resultat Figur 4-11: log.php 70(106)

71 Resultat Systemets del för timanställda En mycket stor del av denna del är baserat på koden från den administrativa sidan. Skillnaden är att de SQL-satser som exekveras är anpassade för den aktuella timanställda. Nedan beskrivs de delar som existerar i denna del av systemet. I enlighet med förra avsnittet beskrivs inte startsidan respektiva logout-delen av menyn. Inställningar Under detta menyalternativ kan man ändra personuppgifter samt kontouppgifter. Möjligheten att ändra sitt användarnamn i systemet finns bland alternativen. Uppdrag Denna del är identisk med den administrativa delen bortsett från skillnaden att informationen är individbaserad. Arbetstider Kalenderfunktion där man kan se de aktuella uppdragen och deras status. Det är samma funktion som den administrativa delen bortsett från sin individanpassade visning. Rapport Denna del är huvudfunktionen i denna del av systemet. Den timanställda rapporterar utförda uppdrag. Finns det flera uppdrag att rapportera visas alla på sidan. 71(106)

72 Resultat Nedanstående figurer beskriver delens utseende. Figur 4-12: preferences.php Figur 4-13: assignment.php 72(106)

73 Resultat Figur 4-14: calender.php Figur 4-15: assignment_report.php Som ett komplement till ovanstående figurer beskriver bilaga 3 hur systemet ser ut på olika plattformar. Bilagan ska visa till hur stor grad plattformsoberoende har uppnåtts. 73(106)

74 Resultat 4.2 Slutsats De krav på systemet som definierades i kravspecifikationen har uppfyllts. Målet med arbetet var att lösa de problem som beskrivits. Det fokuserade problemet som prioriterades var företagets ineffektiva hantering av uppdrag och dess indirekta löneberäkningar. Resultatet av arbetet ledde till en effektivisering av denna uppdragshantering. Funktionaliteten för att kunna utföra dessa aktiviteter är implementerade i systemet. Istället för att utföra dessa uppgifter för hand kan man nu hantera uppdragen i datorn. Dessutom behöver inte företaget behandla den e-post som de timanställda skickar vid en rapportering. Utöver denna besparing i tid behöver inte heller den administrativa personalen ringa och påminna timanställda om glömda uppdragsrapporteringar då systemet gör detta automatiskt åt dem. Om man relaterar till de generella mål som definierades under avsnitt 1.5, följer slutsatsen om att systemet har egenskaper som till en acceptabel nivå uppfyller dessa mål. Eftersom det i princip alltid finns förbättringspotential när det gäller dessa idealistiska mål måste man sätta en tröskelnivå någonstans. Dessa egenskaper har varit en mycket viktig del under systemets design och implementation. Några aspekter som särskilt har belysts under arbetets gång har varit principen om plattformsoberoende, korrekthet och säkerhet. Dessa har påverkat vägvalen avsevärt, medan andra aspekter har påverkat men inte till lika stor grad. Systemet har på grund av den skrivna SMTP-klientfunktionen minimerat antal beroenden. Systemet kräver endast PHP och MySQL för att fungera. Baserat på resultatet från testfasen och kompatibilitetskraven i kravspecifikationen tolkas graden av målens uppfyllande som acceptabla. 74(106)

75 Diskussion 5 Diskussion Man kan se systemets krav som uppfyllda, men eftersom det finns förbättringspotential i systemet kan det inte ses som fullständigt. Det finns dessutom stora möjligheter att bygga ut systemet med nya funktioner som ger mervärde för företaget. Arbetet blev begränsat i och med dess begränsade tidsperiod. Utöver nämda förbättringsåtgärder hade man kunnat tillämpa mer objektorienterade aspekter under implementationsfasen. Detta hade gett en effektivare och kortare kod då man hade kunnat återanvända kod i större grad. Man skulle också kunna skapa en mer sofistikerad felhantering och mer specifika felmeddelanden i systemet. Om tid hade funnits hade man kunnat verifiera systemets användbarhet med hjälp utav brukarstudier. Detta hade gett feedback för förbättringsåtgärder. Totalt sett kan man dock se arbetet som framgångsrikt då det löst de problem som definierats. I och med systemets design finns stora möjligheter för utbyggnad. Därmed kan företaget effektivisera sin verksamhet ytterligare. För att göra rapporten komplett har ett installationsexempel placerats som rapportens sista bilaga. Detta kan vara intressant för företaget i framtiden då det kan finnas en vilja att driva en egen server. 75(106)

76 Referensförteckning 6 Referensförteckning [1] IETF Hypertext Transfer Protocol HTTP/1.1 RFC 2616, 1999 [2] IETF Uniform Resource Identifier (URI): Generic Syntax RFC 3986, 2005 [3] Stig Jensen & Arne Gjelstrup & Valentino Berti Datakommunikation Liber, 2000, ISBN: X [4] James Marshall HTTP Made Really Easy ( ) [5] David Whalen The Unofficial Cookie FAQ v2.6 ( ) [6] Peter Gagnon The Hypertext Transfer Procotol ( ) [7] IETF Simple Mail Transfer Protocol RFC 2821, 2001 [8] Spyros Sakellariadis SMTP Mail Basics ( ) [9] Trivial uses of Telnet - SMTP Scripts ( ) [10] IETF The MIME Multipart/Related Content-type RFC 1872, 1995 [11] Database Management System ( ) [12] James Groff SQL:The complete Reference, second edition McGraw-Hill Professional, 2002, ISBN: [13] ODBMS FAQ articles/odbms_faq.html ( ) [14] Steve McClure Object Database vs. Object-Relational Databases ( ) 76(106)

77 Referensförteckning [15] Introduction to OMG UML ( ) [16] Mats Apelkrans, Karita Åbom OOS/UML Studentlitteratur, 2001, ISBN: [17] Mark Maslakowski Lär dig MySQL på tre veckor Pagina förlags AB, 2000, ISBN: [18] William Kent A Simple Guide to Five Normal Forms in Relational Database Theory ( ) [19] Mike McGrath SQL in easy steps Computer Step, 2004, ISBN: [20] Mike Chapple SQL Fundamentals ( ) [21] David R. Frick A SQL Vocabulary ( ) [22] Raul Chong, Clara Liu, Sylvia Qi, Dwaine Snow Introduction to DB2 UDB ( ) [23] Sybase ASE History ( ) [24] 5 Things You Probably Didn't Know About T-SQL ( ) [25] SQL Server 2000 Product Overview ( ) [26] About MySQL AB ( ) [27] Frank Naudé FAQ about Oracle Corporation v ( ) [28] Oracle Database 10g ( ) [29] Chuck Musciano, Bill Kennedy HTML The Definitive Guide, Third Edition O'Reilly, 1998, ISBN: (106)

78 Referensförteckning [30] W3C HTML 4.01 Specification ( ) [31] HTML 4.01 Reference ( ) [32] A history of HTML ( ) [33] CSS 2.1 Specification ( ) [34] CSS Syntax ( ) [35] Dave Taylor Creating Cool Web Sites with HTML, XHTML and CSS John Wiley and Sons, 2004, ISBN: [36] XHTML 1.0 The Extensible HyperText Markup Language (Second Edition) ( ) [37] April 2005 Web Server Survey server_survey.html ( ) [38] About the HTTP server project ( ) [39] Apache Server Frequently Asked Questions ( ) [40] Frequently Asked Questions ( ) [41] Overview of Deploying IIS Library/IIS/f6fd347f-d336-4e8d-b2c0-3ae3d3e26d0d.mspx ( ) [42] ISAPI ( ) [43] Three-tier Search ( ) [44] Three-tier ( ) [45] Internet Information Services ( ) 78(106)

79 Referensförteckning [46] PC Magazine Performance Tests: Web Servers ( ) [47] Zeus, An All-Powerful Solution for the Enterprise ( ) [48] Internet Explorer Overview ( ) [49] Why Use Firefox? ( ) [50] Apple - Mac OS X - Safari RSS ( ) [51] Introduction to ASP ( ) [52] PHP vs. ASP.NET ( ) [53] Common Gateway Interface ( ) [54] FastCGI Home ( ) [55] FastCGI Specification Mark R. Brown ( ) [56] JavaServer Pages Technology - Implementations & Specifications ( ) [57] Java Servlet Technology ( ) [58] The Jakarta Site - Apache Jakarta Tomcat ( ) What is PHP? ( ) [59] [60] What can PHP do? ( ) [61] Using PHP from the command line ( ) [62] Introduction to PHP-GTK ( ) [63] Mike McGrath JavaScript in easy steps Computer step, 2003, ISBN: (106)

80 Referensförteckning [64] David Flanagan JavaScript: The Definite Guide O'Reilly, 2002, 2002, ISBN: [65] Jan Gulliksen, Bengt Göransson Användarcentrerad systemdesign Studentlitteratur, 2002, ISBN: [66] International Organization for Standardization Guidance on Usability ISO , 1998 [67] Security ( ) [68] Anderson, Ross Security Engineering Wiley, 2001, ISBN [69] The CIA principle ( ) [70] Non-repudiation ( ) [71] What is cryptography? ( ) [72] Chris Shiflett ApacheCon: PHP Security ( ) [73] SQL Injection Attacks By Example ( ) [74] W3C Teknologi ( ) [75] W3C Historia ( ) [76] The W3C Technology Stack ( ) [77] W3C (World Wide Web Consortium) ( ) [78] JPEG image compression FAQ ( ) [79] JPEG Compression ( ) 80(106)

81 Referensförteckning [80] An Overview of JPEG ( ) [81] Intro to PNG features ( ) [82] W3C, PNG ( ) [83] W3C, XHTML ( ) [84] W3C, Cascading Style Sheets ( ) [85] W3C, Style Sheets ( ) [86] W3C, Date and Time Formats ( ) [87] A summary of the International standard date and time notation ( ) 81(106)

82 Sökord 7 Sökord A Användarcentrerade system...38 Apache...29 ASP...34 Avgränsning...10 N Normalisering...19 C CGI...35 CSS...26 P PHP...36 PNG...48 D Databasmodellering...53 Datasäkerhet...40 DBMS...17 Diskussion...75 R Resultat...63 H HTML...25 HTTP...11 I IBM DB IIS...30 Internet explorer...31 J JPEG...46 JSP...36 M Mål och syfte...9 Microsoft SQL Server...24 Mozilla Firefox...32 MySQL...24 O Oracle...24 S Safari...33 Slutsats...74 SMTP...14 SQL...19 V Verksamhetsbeskrivning...7 W W3C...45 X XHTML...28 Z Zeus (106)

83 Bilagor Bilaga Bilaga Bilaga Bilaga Bilaga Kravspecifikation Klassdiagram Screenshots ifrån olika plattformar PHP-klasser Installationsexempel

84 Bilaga 1 : Kravspecifikation Funktionalitet: Administrativ del Inloggningsfunktion Hantering av företagsinformation (ändra) Hantering av timanställda (söka, ändra) Hantering av kunder (lägga till, söka, ändra) Hantering av uppdrag (lägga till, söka, ändra) Kalenderfunktion för att granska rapporteringar Översiktlig månadsvis summering av uppdrag Individuell månadsvis löneberäkning Loggfunktion (övervakning av hur systemet används; riskanalys och felsökning) Utloggningsfunktion Funktionalitet: Användardelen Inloggningsfunktion Epostfunktion som skickar glömda lösenord Hantering av personuppgifter samt kontouppgifter Kalenderfunktion för att granska individuella uppdrag Rapporteringsfunktion för utförda uppdrag Utloggningsfunktion Funktionalitet: Automatiska funktioner Epostfunktion som påminner användare om ej rapporterade uppdrag (en vecka efter uppdragets datum). Utformning av grafiskt gränssnitt Ett användarcentrerat system som användare utan större problem kan lära sig och arbeta effektivt i. Gränssnittet ska vara självförklarande, konsekvent samt lösa de aktuella problemen. Kompatibelitetskrav Plattformsoberoende design som minimerar beroenden till andra programvaror om möjligt. Det ska gå att kunna köra systemet på alla plattformar. Systemet ska vara designat med långsiktighet och kompatibilitet som mål. Det ska gå att köra det på så många webbläsare som möjligt oavsett plattform. Det ska inte kräva några extra plugins, utan ska fungera med standardprogramvaror. Systemet är tänkt att köras på ett webbhotell. Det skall därför vara kompatibelt med sådana plattformar.

85 Bilaga 2 : Klassdiagram Foretagsuppgift Kund *KundID Foretagsnamn Adress Postnummer Ort Kontaktperson Telefonnr Faxnr Mobiltelefonnr Avdelning Epostadress *ForetagsuppgiftID Foretagsnamn Adress Postnummer Ort Telefonnr Mobiltelefonnr Epostadress Organisationsnr Momsregnr Bankgiro Plusgiro Arbetsgivaravgift Inkomstskatt Log *LogID Username Datum Timestamp IP DNS UserAgent Typ Beskrivning Timanstalld 1..* *Username Password 1 Skapades TimanstalldID Personnummer Fornamn Efternamn Adress Postnummer Ort Telefonnr Mobiltelefonnr Epostadress 1 Uppdrag 0..* *UppdragID Datum Starttid Sluttid Foretagsnamn Beskrivning Kommentar T_Dag_Starttid T_Dag_Sluttid T_Kvall_Starttid T_Kvall_Sluttid T_Natt_Starttid T_Natt_Sluttid T_Dag_Lon 1 T_Kvall_Lon T_Natt_Lon 1..* Uppdrag_Medlem *UppdragID *TimanstalldID 1..* 1 Rapporterat Kommentar Paminnelse Starttid Sluttid Rast1_Starttid Rast1_Sluttid Rast2_Starttid Rast2_Sluttid Rast3_Starttid Rast3_Sluttid

86 Förtydligande beskrivning av relationerna: En kund kan vara med i inget eller flera uppdrag. Ett uppdrag refererar endast till en kund. Varje Uppdrag har en eller flera medlemmar, medan varje medlem av uppdraget har en relation till tabellen uppdrag. Varje Uppdrag består av en eller flera timanställda. En timanställd kan förekomma en gång per uppdrag. En timanställd har inga eller flera loggar. En log refererar endast till en timanställd.

87 Bilaga 3 : Screenshots ifrån olika plattformar new_assignment.php Internet Explorer, Windows Mozilla Firefox, Linux

88 Safari, Mac OS X calender.php Internet Explorer, Windows

89 Mozilla Firefox, Linux Safari, Mac OS X

90 economy.php Internet Explorer, Windows Mozilla Firefox, Linux

91 Safari, Mac OS X

92 Bilaga 4 : PHP-klasser Nedanstående kod är anpassad för det utvecklingssystem som använts vid skapandet av systemet. Lösenord och liknande uppgifter har ingen relation till den verkliga implementationen. class Time { # # Functions for today's time # # Return today's year, 4 digits public function TodayYear() { $year = date("y"); return $year; } # Return today's month, without leading zeros public function TodayMonth() { $month = date("n"); return $month; } # Return today's day of the month, without leading zeros public function TodayDay() { $day = date("j"); return $day; } # Return today's week public function TodayWeek() { $week = date("w"); return $week; } # Return ISO 8601 formated string public function TodayISO8601() { $date = date("c"); $date = substr($date,0,10); return $date; } # Return UNIX timestamp formatted integer public function TodayUNIXTimestamp() { $timestamp = date("u"); return $timestamp; }

93 # # Generic time functions # # Calculate the date for the monday in a week. Return value in UNIX timeformat public function MondayDateWeek($year,$week) { $days = array("mon","tue","wed","thu","fri","sat","sun"); # Calculate the dayname for the 4th January (the 4th always in week 1) $day = date("d",mktime(0,0,0,1,4,$year) ); # Determine which index to use for($i = 0; $i<7 ; $i++) { if ($days[$i] == $day) break; } # Calculate the date for the monday in that week $firstmonday = (4 - $i); # Take care of weeks that begin on the previous year if ($firstmonday < 1) { $firstmonday = (31 + $firstmonday); $time = mktime(0,0,0,12, ($firstmonday + (($week-1) * 7 )), ($year-1) ) ; } # Take care of all other years else { $time = mktime(0,0,0,1, ($firstmonday + (($week-1) * 7 )),$year ) ; } return $time; } # Return Year from UNIX timeformat public function UNIXtoYear($time) { $year = date("y",$time); return $year; } # Return Month from UNIX timeformat public function UNIXtoMonth($time) { $month = date("n",$time); return $month; } # Return Day from UNIX timeformat public function UNIXtoDay($time) { $day = date("j",$time); return $day; } # Return the week number from UNIX timeformat public function UNIXtoWeek($time) {

94 $week = date("w",$time); return $week; } # Return total number of weeks in a year public function NrWeeks($year) { for ($i=25;$i<=40;$i++) { $weeknr = date("w",mktime(0,0,0,12,$i,$year) ). "<br>"; if ($weeknr == 53) break; } if ($i == 41) return 52; else return 53; } # Calculate which month that is dominating in a week. Based on MondayDateWeek() public function DominatingMonth($time) { $month_count = array(0,0,0,0,0,0,0,0,0,0,0,0); for($i=0; $i<7; $i++) { $month = date("n",($time+ (3600*24*$i) ) ). "<br>"; switch ($month) { case 1: $month_count[0] += 1; break; case 2: $month_count[1] += 1; break; case 3: $month_count[2] += 1; break; case 4: $month_count[3] += 1; break; case 5: $month_count[4] += 1; break; case 6: $month_count[5] += 1; break; case 7: $month_count[6] += 1; break; case 8: $month_count[7] += 1; break; case 9: $month_count[8] += 1; break; case 10: $month_count[9] += 1; break; case 11: $month_count[10] += 1; break; case 12:

95 $month_count[11] += 1; break; } } # Determine the highest countvalue $max = 0; for($i=0; $i<12; $i++) { if ($month_count[$i] > $max) $max = $month_count[$i]; } # Find the month that has the highest countvalue for($i=0; $i<12; $i++) { if ($month_count[$i] == $max) break; } $dominating_month = ($i + 1); return $dominating_month; } # Return the year from ISO8601 format public function ISO8601_to_year($date) { return substr($date,0,4) ; } # Return the month from ISO8601 format public function ISO8601_to_month($date) { if (substr($date,5,1) == "0") return substr($date,6,1) ; else return substr($date,5,2); } # Retorn the day from ISO8601 format public function ISO8601_to_day($date) { if (substr($date,8,1) == "0") return substr($date,9,1) ; else return substr($date,8,2); } # Return date in ISO8601 format from three variables # with no preceding zero public function tovalidiso8601($year,$month,$day) { if ($month < 10) { if ($day < 10) $date = $year. "-0". $month. "-0". $day; else $date = $year. "-0". $month. "-". $day; } else { if ($day < 10)

96 $date = $year. "-". $month. "-0". $day; else $date = $year. "-". $month. "-". $day; } return $date; } } class Mail { public function send_mail($mail_from,$mail_to,$subject,$message_plain_text, $message_html) { #--- Sends an encoded with base64 with MIME (plain text & html) --# Define system specific parameters $local_hostname = "guilong.org"; $smtp_hostname = "smtp.bredband.net"; $phpheader = "PHP/". phpversion(); # Encode message data into base64 format $base64_plain_text = base64_encode($message_plain_text); $base64_html = base64_encode($message_html); # Collect message data and concaternate it into a string $CRLF = "\r\n"; $message = $CRLF. "This is a multi-part message in MIME format.". $CRLF. $CRLF. "--next_part". $CRLF. "Content-Type: text/plain; charset=\"iso \"". $CRLF. "Content-Transfer-Encoding: base64". $CRLF. $CRLF. $base64_plain_text. $CRLF. $CRLF. "--next_part". $CRLF. "Content-Type: text/html; charset=\"iso \"". $CRLF. "Content-Transfer-Encoding: base64". $CRLF. $CRLF. $base64_html. $CRLF. $CRLF. "--next_part--". $CRLF. $CRLF. ".". $CRLF ; # Create SMTP command strings $HELLO = "HELO ". $local_hostname. $CRLF; $MAIL_FROM = "MAIL FROM: ". $mail_from. $CRLF; $RCPT_TO = "RCPT TO: ". $mail_to. $CRLF; $DATA = "DATA". $CRLF; $MESSAGE = "MIME-Version: 1.0". $CRLF. "Content-Type: multipart/alternative; boundary=\"next_part\"". $CRLF. $QUIT "From: Quickmatch". $CRLF. "To: ". $mail_to. $CRLF. "Subject: ". $subject. $CRLF. "X-Mailer: ". $phpheader. $CRLF. $message ; = "QUIT". $CRLF ; $command_sequence = array($hello,$mail_from,$rcpt_to,$data,$message); # Create socket and send the data $fp 25); $status = 0; if (!$fp)

97 { #Cannot connect to specified hostname $status = -1; } else { for($i=0;$i<=4;$i++) { if ($i ==0) { $result 1024); #echo $result; } if ( ($i == 0) && (substr($result,0,3) == 220) ) $result 1024); #echo $result; } else if ( ($i > 0) && (substr($result,0,3) == 250) ) $result 1024); #echo $result; } else if ( ($i == 4) && (substr($result,0,3) == 354) ) $result 1024); #echo $result; } else { #An error occured while communicating with server $status = -1; break; } # Everything went well if ($i == 4) $status = 1; } #Send quit $QUIT); $result 1024); #echo $result; } # Close if($status == 1) return $status; else { #An error occured while sending data return $status; } } }

98 class Log { public function log_entry($username,$type,$description) { # Create connection to database $handle_id = mysql_connect("localhost","mysql","syu#ar8u%9gx") ; $select = mysql_select_db("quickmatch") ; $SQL = "SELECT MAX(LogID) AS MaxLogID FROM Log;"; $res_id = mysql_query($sql,$handle_id); $row=mysql_fetch_object($res_id); $nextvalue = ($row->maxlogid + 1); $Time = new Time; $date = $Time->TodayISO8601(); $timestamp = $Time->TodayUNIXTimestamp(); $ip #$dns $useragent = $_SERVER['REMOTE_ADDR']; = $_SERVER['REMOTE_HOST']; = $_SERVER['HTTP_USER_AGENT']; # Add entry without DNS value, which can be added manually (for performance reasons) $SQL = "INSERT INTO Log(LogID,Username,Datum,Timestamp,IP,UserAgent, Typ,Beskrivning) VALUES ($nextvalue,\"$username\",\"$date\",$timestamp, \"$ip\",\"$useragent\",$type,\"$description\")"; $res_id = mysql_query($sql,$handle_id); # Close database connection mysql_close($handle_id); } public function clear_log() { # Create connection to database $handle_id = mysql_connect("localhost","mysql","syu#ar8u%9gx") ; $select = mysql_select_db("quickmatch") ; # Clear table exept for reference row $SQL = "DELETE FROM Log WHERE LogID >0"; $res_id = mysql_query($sql,$handle_id); #Close database connection mysql_close($handle_id); } }

99 Bilaga 5 : Installationsexempel Eftersom systemet är plattformsoberoende existerar ett flertal fungerande lösningar. En vanlig variant är dock att använda sig av operativsystemet Linux som på grund av sin licensmodell har många fördelar. Nedan beskrivs en möjlig implementation som inriktar sig på fallet där företaget hanterar en egen server. Detaljerna i exemplet (programversioner) kommer av naturliga skäl att förändras med tiden, medan de principiella stegen kommer vara oförändrade. I likhet med bilaga 4 beskrivs lösenord för testsystemet som inte används i den verkliga implementationen. Beskrivningen nedan baserar sig på följande nätverksstruktur: Kärnan Om kärnan tidigare är konfigurerad för någon annan tillämpning, kan detta påverka säkerheten och prestandan. I enstaka fall kan det dock visa sig att även stabiliteten kan påverkas. Drivrutiner som fungerar klanderfritt på vissa chipsets kan orsaka kernel panic eller något mindre allvarligt stabilitetsproblem. Av denna anledning är det fördelaktigt att anpassa kärnan specifikt för en viss datorkonfiguration. Metod för att starta kernelkonfigureringen (i /usr/src): tar jxvf linux tar.bz2 ln -s linux linux cd linux make menuconfig Kommandot make menuconfig startar upp ett textbaserat menysystem (ncursesbaserat), där man ställer in lämplig konfiguration.

Webbservrar, severskript & webbproduktion

Webbservrar, severskript & webbproduktion Webbprogrammering Webbservrar, severskript & webbproduktion 1 Vad är en webbserver En webbserver är en tjänst som lyssnar på port 80. Den hanterar tillgång till filer och kataloger genom att kommunicera

Läs mer

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

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion Webbteknik En kort introduktion Innehåll Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender 1 Historisk återblick 89 CERN Tim Berners Lee Ett plattformsoberoende sätt att sprida

Läs mer

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

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, 1971. Internet började med ARPANET Olika slags datornätverk Förberedelse inför laboration 4. Historik Protokoll, / Adressering, namnservrar WWW, HTML Föreläsning 5 Internet LAN Local Area Network student.lth.se (ganska stort LAN) MAN Metropolitan

Läs mer

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

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 Webben som verktyg Idag: Hur hänger det ihop? Viktiga tekniker Stegen i ett webbprojekt Verktyg Dreamweaver Photoshop Joomla CMS Storyboard och flödesschema Fixa webbhotell Hur hänger det ihop? För att

Läs mer

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

SQLs delar. Idag. Att utplåna en databas. Skapa en databas Idag SQLs delar Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? Behöver

Läs mer

Grundläggande datavetenskap, 4p

Grundläggande datavetenskap, 4p Grundläggande datavetenskap, 4p Kapitel 4 Nätverk och Internet Utgående från boken Computer Science av: J. Glenn Brookshear 2004-11-23 IT och medier 1 Innehåll Nätverk Benämningar Topologier Sammankoppling

Läs mer

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

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP Exempel på klientsidan WWW Javascript-interpretator XML-interpretator HTML-interpretator Java-interpretator CSS-interpretator Använder TCP Kan återanvända uppkoppling Inga tillstånd hos servern OS API

Läs mer

Föreläsning 4. CSS Stilmallar för webben

Föreläsning 4. CSS Stilmallar för webben Föreläsning 4 CSS Stilmallar för webben Innehåll 1. CSS, vad är det? 2. Repetition av HTML-element 3. CSS, hur, var, när? 4. CSS & arv? CSS Cascading Style Sheet Same, same, but different Samma innehåll

Läs mer

TNMK30 - Elektronisk publicering

TNMK30 - Elektronisk publicering Webben TNMK30 - Elektronisk publicering Vad är internet? Vad är internet? Vad är internet? Internet: sammankoppling av datornätverk. Används för bl.a. epost, chat, filöverföring, webbsidor. Kommunikation

Läs mer

Datakommunika,on på Internet

Datakommunika,on på Internet Webbteknik Datakommunika,on på Internet Rune Körnefors Medieteknik 1 2015 Rune Körnefors rune.kornefors@lnu.se Internet Inter- = [prefix] mellan, sinsemellan, ömsesidig Interconnect = sammanlänka Net =

Läs mer

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information. Vad är en databas? Exempel på databaser: Kortregister på kontor Sjukvårdsjournal Bokregister på bibliotek Medlemsregister i en förening Kundregister på företag Telefonkatalogen Databas = Organiserad samling

Läs mer

Introduk+on +ll programmering i JavaScript

Introduk+on +ll programmering i JavaScript Föreläsning i webbdesign Introduk+on +ll programmering i JavaScript Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se Språk Naturliga språk Mänsklig kommunika+on T.ex. Svenska, engelska,

Läs mer

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20 Idag Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 1 / 20 Idag Hur skapar vi och underhåller en databas? Hur skapar man tabeller?

Läs mer

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

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll FrontPage Express I programpaketet Internet Explorer 4.0 och 5.0 ingår också FrontPage Express som installeras vid en fullständig installation. Det är ett program som man kan använda för att skapa egna

Läs mer

Statistik från webbplatser

Statistik från webbplatser Statistik från webbplatser problem och möjligheter Ulf Kronman Föredragets huvuddelar Frågorna och motfrågorna Vilka frågor ställer chefen, BIBSAM och ISO? Varför ställer webmastern krångliga motfrågor?

Läs mer

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer Disposition 1. Kopplingen mellan Processanalys (DFDdiagram) och konceptuell modellering (ERdiagram) (se kap 4) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer Databasen (Kap 2) Den relationella

Läs mer

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

Programmeringteknik. Planering 2014-05-12 MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen MÅL Programmeringteknik Webbdelen Efter webbmomentet ska du: kunna använda ett tiotal kommandon i: HTML (göra webbsidor) CSS (webbsidans utseende) Javascript (programmering - klienten) PHP (programmering

Läs mer

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Databasföreläsning Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Tabeller Personer Databas Nummer Namn Födelseår 1 Tina 1950 2 Siv 1965 3 Olle 1980 Platt databas: all information

Läs mer

Design och underhåll av databaser

Design och underhåll av databaser Design och underhåll av databaser 1. Modell av verkligheten 2. Normalformer 3. Introduktion till DDL 4. Skapa databaser 5. Skapa tabeller 6. Skapa index 7. Restriktioner 8. Ta bort databaser, tabeller

Läs mer

ORDLISTA WEBBDESIGN 100P

ORDLISTA WEBBDESIGN 100P ORDLISTA WEBBDESIGN 100P HTML- TAGGAR M.M. (DE BLÅFÄRGADE ORDEN ÄR OLIKA ATTRIBUT SOM HÖR TILL DE OLIKA TAGGARNA.) HTML Står för Hyper Text Markup Language och är en uppsättning markeringskoder.

Läs mer

Inför prov 1 i webbdesign

Inför prov 1 i webbdesign Inför prov 1 i webbdesign Skapa ett grundläggande HTML-dokument sidtitel övriga instruktioner Grundläggande märken, samt hur de används startmärke

Läs mer

Kort om World Wide Web (webben)

Kort om World Wide Web (webben) KAPITEL 1 Grunder I det här kapitlet ska jag gå igenom allmänt om vad Internet är och vad som krävs för att skapa en hemsida. Plus lite annat smått och gott som är bra att känna till innan vi kör igång.

Läs mer

Innehåll. MySQL Grundkurs

Innehåll. MySQL Grundkurs MySQL Grundkurs Copyright 2014 Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Innehåll Introduktion till databaser Installera MySQL lokalt Webbserverprogrampaket (XAMPP) Introduktion till phpmyadmin

Läs mer

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal

Läs mer

Webbprogrammering. Sahand Sadjadee

Webbprogrammering. Sahand Sadjadee Webbprogrammering Sahand Sadjadee Agenda Webb The World Wide Web (WWW) is a network of online content that is formatted in HTML and accessed via HTTP. The term refers to all the interlinked HTML pages

Läs mer

Avancerade Webbteknologier

Avancerade Webbteknologier Projektledning, Business Knowledge Användbarhet & Layout Avancerade Webbteknologier Lkti Lektion 1 Kommunikation Tobias Landén tobias.landen@chas.se Avancerade webbteknologier del 1 (4 KY poäng) Syfte

Läs mer

Datasäkerhet och integritet

Datasäkerhet och integritet Chapter 4 module A Networking Concepts OSI-modellen TCP/IP This module is a refresher on networking concepts, which are important in information security A Simple Home Network 2 Unshielded Twisted Pair

Läs mer

En grundkurs i hemsidor och hur de är uppbyggda

En grundkurs i hemsidor och hur de är uppbyggda En grundkurs i hemsidor och hur de är uppbyggda Den här artikeln tänkte väldigt grundligt gå igenom koncepten kring en hemsida och hur den är uppbyggt, för att ge dig grundkunskap att bygga vidare på och

Läs mer

VAD GÖR DU / VEM ÄR DU?

VAD GÖR DU / VEM ÄR DU? INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering

Läs mer

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

Webbens grundbegrepp. Introduktion till programmering. Ytterligare exempel. Exempel på webbsida. Föreläsning 5 Introduktion till programmering Föreläsning 5 Programmering av webbsidor. Webbens grundbegrepp HTML HTML (HyperText Markup Language) är det språk som används för att skriva webbsidor. HyperText: text med

Läs mer

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

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript

Läs mer

Databasutveckling Introduktion till SQL och TSQL

Databasutveckling Introduktion till SQL och TSQL Databasutveckling Introduktion till SQL och TSQL Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Introduktion till SQL SELECT satsen, enkla frågor Hämta specifika kolumner Alias

Läs mer

Språk för webben introduk4on 4ll HTML

Språk för webben introduk4on 4ll HTML Föreläsning i webbdesign Språk för webben introduk4on 4ll HTML Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se En webbsidas beståndsdelar Text (formaterad, strukturerad) Länkar Inkluderade

Läs mer

För att skriva CSS-kod använder man sig av olika kommandon. Ett exempel på hur man kan skriva kod för att ändra textfärg kan vara:

För att skriva CSS-kod använder man sig av olika kommandon. Ett exempel på hur man kan skriva kod för att ändra textfärg kan vara: Hemsida CSS Introduktion till Cascading Style Sheets (CSS) Detta är en mycket kort genomgång av CSS med exempel på hur sådan kod ska läsas och hur den kan användas på IdrottOnline-sidor. Är man ute efter

Läs mer

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

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011 Webbteknik II Föreläsning 5 Restless farewell HTTP Request HTTP verbs (methods): GET, POST, HEAD, DELETE, PUT, OPTIONS, TRACE, CONNECT http://www.w3.org/protocols/rfc2616/rfc2616-sec9.html variable=value&variable2=value2

Läs mer

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

Introduktion till integrering av Schenkers e-tjänster. Version 2.0 Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen

Läs mer

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

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är

Läs mer

Internets historia Tillämpningar

Internets historia Tillämpningar 1 Internets historia Redan i slutet på 1960-talet utvecklade amerikanska försvaret, det program som ligger till grund för Internet. Syftet var att skapa ett decentraliserat kommunikationssystem som skulle

Läs mer

Modul 6 Webbsäkerhet

Modul 6 Webbsäkerhet Modul 6 Webbsäkerhet Serverskript & Säkerhet Webbservrar & serverskript exponerar möjlighet för fjärranvändare att skicka data och köra kod vilket medför risker. Man ska aldrig lita på att alla vill göra

Läs mer

Beijer Electronics AB 2000, MA00336A, 2000-12

Beijer Electronics AB 2000, MA00336A, 2000-12 Demonstration driver English Svenska Beijer Electronics AB 2000, MA00336A, 2000-12 Beijer Electronics AB reserves the right to change information in this manual without prior notice. All examples in this

Läs mer

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras. Laboration 1, Databashantering med MySQL Av: Marcus Rejås I denna laboration skall du se till att du kommer åt databasmotorn och att det fungerar. Du kommer också att skapa en tabell

Läs mer

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Sida: 1(7) Installationsanvisningar VisiWeb Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Detta dokument Detta dokument beskriver hur man installerar VisiWeb på en

Läs mer

Databaser och Datamodellering Foreläsning IV

Databaser och Datamodellering Foreläsning IV Webbprogrammering - 725G54 Databaser och Datamodellering Foreläsning IV Agenda Databaser ERD SQL MySQL phpmyadmin Labb 4 Databaser Databas - samling med data Databashanterare Enkelt Kraftfullt Flexibelt

Läs mer

Hantera informationspaket i system för bevarande

Hantera informationspaket i system för bevarande Kompetensutveckling har erbjudits deltagare inom projektet Elektroniskt bevarande i form av en kurs i XML. Kursen har genomförts av Riksarkivet och haft en praktisk inriktning. Ett 10-tal personer deltog

Läs mer

Utvecklingen av ett tidregistrerings- och faktureringssystem

Utvecklingen av ett tidregistrerings- och faktureringssystem Datavetenskap Opponenter: Anders Heimer & Jonas Seffel Respondenter: Daniel Jansson & Mikael Jansson Utvecklingen av ett tidregistrerings- och faktureringssystem Oppositionsrapport, C-nivå 2006:10 1 Sammanfattat

Läs mer

Webbtillgänglighet. Webbtillgänglighet. World Wide Web Consortium. Web Accessibility Initiative, WAI WCAG 2.0 WCAG 1.0

Webbtillgänglighet. Webbtillgänglighet. World Wide Web Consortium. Web Accessibility Initiative, WAI WCAG 2.0 WCAG 1.0 Webbtillgänglighet Webbtillgänglighet Att göra webbinnehåll så att de är tillgängliga för alla oavsett vilka funktionsnedsättningar man har Att göra webbinnehåll tillgängligt oavsett vilken in- och utmatningsutrustning

Läs mer

Övning (X)HTML 2. Sidan 1 av 7 2010-11-11

Övning (X)HTML 2. Sidan 1 av 7 2010-11-11 Sidan 1 av 7 2010-11-11 Övning (X)HTML 2 Innan du börjar med laborationen ska du se till så att du har öppnat din editor (till exempel Notepad++). I denna editor ska du skriva (X)HTML-kod som du sedan

Läs mer

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata Innehåll MySQL Intro Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata 1 Lagrad procedur / Stored Procedure Lagrad procedur har många namn, förkortningen

Läs mer

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

ITK:P2 F1. Hemsidor med HTML HTML. FTP, HTTP, HTML, XML och XHTML ITK:P2 F1 FTP, HTTP, HTML, XML och XHTML DSV Peter Mozelius 1 Hemsidor med HTML Hur många av er har provat på att bygga en egen hemsida med HTML eller XHTML? För hand eller med hjälpverktyg? Har ni lagt

Läs mer

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript? Innehåll JavaScript En introduktion till skriptspråket JavaScript och till DOM Scripting Introduktion till JavaScript och DOM JavaScript Syntax DOM och DOM Scripting Händelsehantering och CSS Historia

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Hemsideutveckling för Anjool AB

Hemsideutveckling för Anjool AB Beteckning: Akademin för teknik och miljö Hemsideutveckling för Anjool AB Christopher Gidlöf Maj 2012 Examensarbete 15hp B nivå Datavetenskap Internetteknologi Examinator: Carina Petterson Handledare:

Läs mer

Webbserver och HTML-sidor i E1000 KI

Webbserver och HTML-sidor i E1000 KI 1 Funktion och användningsområde E1000-terminalen (E1032-E1151) kan användas som webbserver. En webbserver är ett program som hanterar filer som ska visas i en webbläsare som exempelvis Internet Explorer.

Läs mer

Introduktion HTML och PHP 732G16 Databaser design och programmering

Introduktion HTML och PHP 732G16 Databaser design och programmering Introduktion HTML och PHP 732G16 Databaser design och programmering 08-04-22 Ingrid Alin Nilsson 1 Presentationen tar upp Lite grundläggande om HTML Grunderna i PHP Styrstrukturer Funktioner Filhantering

Läs mer

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

Hyperlänkar. I HTML skapar man en hyperlänk med taggen <a> </a>, som är en förkortning av ordet ankare, på (engelska anchor). Länkar, ankar och resurser En länk är en hänvisning från ett dokument till en resurs. En resurs kan nästan vara vad som helst. Det mesta på internet är resurser i någon form, som exempelvis HTLM-dokument,

Läs mer

Arbetsmaterial HTML pass 1 - Grunder

Arbetsmaterial HTML pass 1 - Grunder Arbetsmaterial HTML pass 1 - Grunder Det vi idag kallar Internet växte fram ur ett amerikanskt nätverk kallat ARPAnet som skapades i slutet av 60 talet. Ett topphemligt verktyg för att koppla ihop stordatorer

Läs mer

Vad är en databas? Databasutveckling Med MySQL/MariaDB

Vad är en databas? Databasutveckling Med MySQL/MariaDB Databasutveckling Med MySQL/MariaDB Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Vad är en databas? Från Wikipedia En databas (tidigare databank) är en samling information som är organiserad

Läs mer

Swedbank Mobile Loadtesting. LoadRunner 11.04 Mobile App protocol

Swedbank Mobile Loadtesting. LoadRunner 11.04 Mobile App protocol Swedbank Mobile Loadtesting LoadRunner 11.04 Mobile App protocol Bakgrund Mission: Prestandatesta mobilt backend Typ: RESTful tjänst Underlag: Dokumenterat URI och API (Uniform Resource Identifier, Application

Läs mer

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14 Övningar i SQL Övningar i SQL Använd Access för att öva SQL (= Structured Query Language) Skapa tabeller med SQL 1. Ny databas: SQLÖVNING Klicka: Frågor > Ny > Design > OK >Stäng > SQL Radera ordet SELECT.

Läs mer

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

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011 Webbteknik II Föreläsning 4 Watching the river flow Web Service XML-RPC, SOAP, WSDL, UDDI HTTP Request, Response, Headers, Cache, Persistant Connection REST Hype or the golden way? Web Service / Webbtjänst

Läs mer

IT för personligt arbete F2

IT för personligt arbete F2 IT för personligt arbete F2 Nätverk och Kommunikation DSV Peter Mozelius Kommunikation i nätverk The Network is the Computer Allt fler datorer är sammankopplade i olika typer av nätverk En dators funktionalitet

Läs mer

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

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1. Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning

Läs mer

Christer Scheja TAC AB

Christer Scheja TAC AB Byggnadsautomation för ingenjörer Byggnadsautomation för ingenjörer VVS-tekniska föreningen, Nordbygg 2004 Christer Scheja TAC AB resentation, No 1 Internet/Intranet Ihopkopplade datornät ingen ägare Internet

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 2003-01-20 DAV B04 - Databasteknik 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 26 Relationsmodellen En formell teori som baserar sig på (främst) mängdlära predikatlogik Föreslogs av E.F Codd 1970 i

Läs mer

Litteratur. Nätverk, Internet och World Wide Web. Olika typer av nätverk. Varför nätverk? Anne Diedrichs Medieteknik Södertörns högskola

Litteratur. Nätverk, Internet och World Wide Web. Olika typer av nätverk. Varför nätverk? Anne Diedrichs Medieteknik Södertörns högskola Litteratur Nätverk, Internet och World Wide Web Anne Diedrichs Medieteknik Södertörns högskola Beekman kap 9-11 Varierar i olika upplagor. Läs alla kapitel om nätverk och Internet och webb Olika typer

Läs mer

Repetition. Hypertext. Internet HTTP. Server och klient Föreläsning 2. Text försedd med länkar till andra texter. Många sammankopplade nät

Repetition. Hypertext. Internet HTTP. Server och klient Föreläsning 2. Text försedd med länkar till andra texter. Många sammankopplade nät Repetition Föreläsning 2 Internet Hypertext Server och klient HTTP HTML Internet Många sammankopplade nät Gemensamma adresser T ex 10.10.0.1 Gemensamma protokoll Protokoll = regler och algoritmer för kommunikation

Läs mer

Repetition. Hypertext. Internet HTTP. Server och klient Text försedd med länkar till andra texter. Många sammankopplade nät

Repetition. Hypertext. Internet HTTP. Server och klient Text försedd med länkar till andra texter. Många sammankopplade nät Repetition Internet Hypertext Server och klient Föreläsning 2 HTTP HTML Internet Hypertext Många sammankopplade nät Text försedd med länkar till andra texter Gemensamma adresser T ex 10.10.0.1 Gemensamma

Läs mer

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index INNEHÅLL SQL DEL 4 DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index Chapter 3, 6, 8 delar av. Beginning SQL Server 2008 for Developers 1 CREATE

Läs mer

Datakommunika,on på Internet

Datakommunika,on på Internet Föreläsning i webbdesign Datakommunika,on på Internet Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se Klient Server Klient (Client kund) ED program för ad utnydja tjänster som begärs

Läs mer

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) Christer Stuxberg christer.stuxberg@im.uu.se Institutionen för Informatik och Media Översikt Introduktion Enkla frågor (queries) Hämta en specifik kolumn Sök Sammanfattning

Läs mer

Nya webbservern Dvwebb.mah.se

Nya webbservern Dvwebb.mah.se Nya webbservern Dvwebb.mah.se Bakgrund: BIT (Bibliotek och IT) beslutar att ta ner Novell systemet 28/3 som är en katalogtjänst som styr bland annat alla studenter s.k. hemkataloger på Malmö högskola såväl

Läs mer

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra. 1 Datafiler tillhör alltid en filgrupp. Det måste alltid finnas en PRIMARY group. Det är inget som hindrar att datafiler på olika diskar tillhör samma filgrupp. PRIMARY gruppen innehåller huvudfilen till

Läs mer

E-posthantering med Novell Groupwise WebAccess

E-posthantering med Novell Groupwise WebAccess E-posthantering med Novell Groupwise WebAccess En liten hjälpreda sammanställd av Thomas Granhäll. Materialet får kopieras fritt! 2003 Följande moment behandlas i denna manual: 1. Logga in 2. Ta emot och

Läs mer

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

Nätverk och Java, grunder Föreläsning 0: 0: Introduktion till Internet Nätverk och Java, grunder Föreläsning 0: 0: Introduktion till Internet Se Se också Intro en en streamad videoinspelning som som finns finns på på nätet nätet Innehåll Kort om grundläggande nätverkskoncept

Läs mer

Att styla webbsidor. Nivå. Uppgiften

Att styla webbsidor. Nivå. Uppgiften Nivå 2 Att styla webbsidor All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club.

Läs mer

Lektion 2 - CSS. CSS - Fortsätt så här

Lektion 2 - CSS. CSS - Fortsätt så här Lektion 2 - CSS I den här lektionen behandlas HTML och CSS. Det förutsätts att lektion 1 är gjord, eller att du har tillräckliga kunskaper i grundläggande HTML för att klara den här lektionen. CSS - Fortsätt

Läs mer

Introduktion till programmering

Introduktion till programmering Introduktion till programmering Föreläsning 5 Programmering av webbsidor. Webbens grundbegrepp HTML HTML (HyperText Markup Language) är det språk som används för att skriva webbsidor. HyperText: text med

Läs mer

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

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015 Objektorienterad Programkonstruktion Föreläsning 10 7 dec 2015 Nätverksprotokoll - OSI Open Systems Interconnection model (ISO standard) definierar 7 lager för nätverkskommunikation: 1 - Physical Layer:

Läs mer

Tabeller. Lektion 7. en tabellrubrikcell som centrerad och i fetstil.

Tabeller. Lektion 7. en tabellrubrikcell som centrerad och i fetstil. Lektion 7 Tabeller Under denna lektion kommer du att få lära dig hur man bygger upp tabeller med HTML och hur man styr layout och utseende på en webbsida som innehåller tabeller. Enkla tabeller Av tradition

Läs mer

CSS-övningar. 1. Grunder

CSS-övningar. 1. Grunder CSS-övningar 1. Grunder CSS Testa stilmallar Klasser Elementen div och span Ärvda egenskaper Mer om typsnitt, marginaler och mått Textdekor Fristående CSS -fil Attributet style Prioritetsordning hos stilelement

Läs mer

VAD GÖR DU / VEM ÄR DU?

VAD GÖR DU / VEM ÄR DU? INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering

Läs mer

Elektronisk publicering TNMK30

Elektronisk publicering TNMK30 Elektronisk publicering TNMK30 Förra gången Usability & interaktionsdesign Projektintroduktion Bildbehandling. Byte av handledare Istället för Martin Johansson Annsofi Pettersson, annpe655@student.liu.se

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se

Läs mer

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

Webbpublicering. Teknikintroduktion 1 Jody Foo (jodfo@ida.liu.se) Webbpublicering Teknikintroduktion 1 Jody Foo (jodfo@ida.liu.se) Föreläsningsöversikt Föreläsning 1 Vad är webbpublicering? Lite historia - Internet och webben Statiska webbplatser Grundkoncept: webbläsare,

Läs mer

2.1 Installation of driver using Internet Installation of driver from disk... 3

2.1 Installation of driver using Internet Installation of driver from disk... 3 &RQWHQW,QQHKnOO 0DQXDOÃ(QJOLVKÃ'HPRGULYHU )RUHZRUG Ã,QWURGXFWLRQ Ã,QVWDOOÃDQGÃXSGDWHÃGULYHU 2.1 Installation of driver using Internet... 3 2.2 Installation of driver from disk... 3 Ã&RQQHFWLQJÃWKHÃWHUPLQDOÃWRÃWKHÃ3/&ÃV\VWHP

Läs mer

Introducerande övningar i HTML

Introducerande övningar i HTML Introducerande övningar i HTML En webbsida består av en textfil som innehåller sidans text och koder i språket HTML, för att formatera innehållet. Har man bilder på sidan, så finns de som separata filer

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 229 PHP Hypertext Preprocessor Scriptspråk på serversidan Innebär att webbservern översätter php-scripten innan sidan skickas till webbläsaren,

Läs mer

WCMS-15, Webbutvecklare CMS

WCMS-15, Webbutvecklare CMS WCMS-15, Webbutvecklare CMS Övningstentamen, delkurs Dynamiska webbplatser (20 YH-poäng) Plats: Medieinstitutet, Malmö Tid: 25 november 2015, kl. 13.00-16.00 Tillåtna hjälpmedel: Papper, penna, suddgummi,

Läs mer

Skapa din egen MediaWiki

Skapa din egen MediaWiki Skapa din egen MediaWiki Inledning och syfte I detta moment skall du installera en egen wiki (Mediawiki), som du skall konfigurera. Du har möjligheten att använda en egen wiki på din dator eller webbhotell

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Lektion 5 HTML, CSS, PHP och MySQL

Lektion 5 HTML, CSS, PHP och MySQL Lektion 5 HTML, CSS, PHP och MySQL I den här lektionen behandlas i huvudsak PHP för att läsa information från en databas, MySQL. Det förutsätts att tidigare lektioner är gjorda, eller att du har tillräckliga

Läs mer

Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:

Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande: WEBBUTVECKLING Ämnet webbutveckling behandlar de tekniker som används för att presentera och bearbeta information i webbläsaren samt utifrån dessa tekniker skapa och vidareutveckla statiska och dynamiska

Läs mer

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7) 1 (7) Försättsblad till skriftlig tentamen vid Linköpings universitet Datum för tentamen Sal (1) Tid Kurskod Provkod Kursnamn/benämning Provnamn/benämning Institution Antal uppgifter som ingår i tentamen

Läs mer

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem Webprogrammering och databaser! Idag: Diverse praktiskt om kursen Webprogrammering Databaser, terminogi Start på ER-modellering! Webprogrammering Kursöversikt! Databasteori och praktik! Fö, le, la + projekt!

Läs mer

Webbtjänster med API er

Webbtjänster med API er Webbtjänster med API er Mål med lektionen! Veta kursmålen. Lite grunder om WCF Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se

Läs mer

<Webbutvecklare lektion="02"> Kursledare: Mahmud Al Hakim

<Webbutvecklare lektion=02> Kursledare: Mahmud Al Hakim Kursledare: Mahmud Al Hakim Lektionstillfällets mål Introduktion till CSS CSS Regler och egenskaper Externa CSS-filer: Link-taggen Intern CSS: Style-taggen Inline CSS: Attributet

Läs mer

Idag. Webben, HTML och CSS. Live demo. Webbens funktion

Idag. Webben, HTML och CSS. Live demo. Webbens funktion Idag Webben, HTML och CSS Institutionen för system- och rymdteknik Luleå tekniska universitet Moment F om webben, HTML och CSS startar nu Dead-line: fredag 28 sep (dvs om en dryg vecka). Uppgift: Skriv,

Läs mer

XML-produkter. -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: Version: 1.

XML-produkter. -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: Version: 1. XML-produkter -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: 2018-09-18 Version: 1.0 Innehållsförteckning 1. Inledning... 3 1.1. Syfte 3 1.2. Målgrupp

Läs mer

Sidan kommer inte läggas upp någonstans utan du redovisar den för mig på något handledningstillfälle.

Sidan kommer inte läggas upp någonstans utan du redovisar den för mig på något handledningstillfälle. Lab1 - CV-sidan Du ska bygga en variant av en CV-sida i HTML och CSS. Sidan ska åtminstone innehålla en bild på dig, en klassisk tabell med utbildningar/erfarenheter, ditt favoritcitat, en eller flera

Läs mer

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

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA... INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...6 2 (6) 2D1954 Programutvecklingsprojekt vt 2003 Installation

Läs mer