Vinter 2005 / Forår Bachelor opgave IMM-B.Eng Afleveringsfrist: mandag d. 6/ kl Holddeltagere:

Størrelse: px
Starte visningen fra side:

Download "Vinter 2005 / Forår Bachelor opgave IMM-B.Eng Afleveringsfrist: mandag d. 6/ kl Holddeltagere:"

Transkript

1 Vinter 2005 / Forår Bachelor opgave IMM-B.Eng Afleveringsfrist: mandag d. 6/ kl Holddeltagere: Studie nr., Efternavn, Fornavne Underskrift s022350, Bech, Peter Denne rapport er modtaget af: den / kl.: : (Udfyldes af instituttet) Side 1 af 48

2 Indhold INDHOLD... 2 INDLEDNING... 4 PROBLEMFORMULERING... 4 PROBLEMSTILLING... 4 AFGRÆNSNING AF OPGAVEN... 5 PLANLÆGNINGSFASEN... 6 KRAVSPECIFIKATION... 6 RISIKOSTYRING... 8 ITERATIONSPLAN... 9 ANALYSE BEGRUNDELSE FOR VALG AF OPGAVE BRAINSTORM USE CASE DIAGRAM DESIGN ARKITEKTUR User layer: Function layer Security layer Database layer FUNKTIONALITET Login Upload og lagring billeder Deling af billeder Visning af billeder Sletning af billeder IMPLEMENTERING administrator.php album.php dbcontrol.php dblogin.php dbmanagement.php dbpicture.php dbpictureedit.php Side 2 af 48

3 dbregister.php dbupload.php fileprocess.php index.php main.php management.php pictureedit.php register.php upload.php index_css.css Database TEST Test af register: Test af login og cookie: Test af billedvisning: Test af billede management: Test af billede upload: FEJL, MANGLER OG MULIGE UDVIDELSER KONKLUSION REFERENCER Side 3 af 48

4 Indledning I min bachelor opgave har jeg valgt at udvikle et billeddelings system. Opgaven skal udarbejdes over 10 uger og skal munde ud i en rapport og et produkt. Ideen bag er at brugere skal kunne dele billeder med hinanden online. Dette kunne være venner og familie imellem, som ikke har interesse i at alle skal kunne se deres private billeder. Problemformulering Problemstilling Jeg ønsker som produkt at udvikle en prototype af et billeddelings system, som indeholder alle de centrale funktioner som gør brugere i stand til at dele billeder hinanden imellem. Jeg vælger derfor at fokusere på disse dele, frem for det grafiske. Selve brugergrænsefladen vil jeg prøve at opbygge så simpelt som muligt, men så det stadig kan illustrere funktionaliteten. En anden grund til at jeg vælger primært at fokusere på billeddelings funktionerne er, at de stiller nogle interessante spørgsmål hvad angår sikkerhed. Hvem der skal have adgang og hvem der skal kunne redigere billederne. Side 4 af 48

5 Afgrænsning Af Opgaven Systemet skal kunne: Selve billeddelings systemet skal kunne foretage de centrale funktioner i forbindelse med deling af billeder. Derfor skal brugere som et minimum kunne: - Være i stand til at uploade billeder til deling - Dele billeder med en anden bruger - Slette delinger af billeder når de ikke længere skal ønskes delt For en detaljeret beskrivelse - se kravspecifikationen. Begrænsninger/restriktioner: For at kunne opfylde disse ting har jeg valgt at udvikle systemet i PHP/HTML/CSS. CSS/HTML vil blive brugt til at lave brugergrænsefladen og til at styre en brugers input. Til at behandle brugers valg og anden data vil jeg anvende PHP. Dette sætter os også i stand til at kommunikere med en database. Da der skal være flere brugere i systemet har jeg valgt at anvende en MySQL database til at holde styr på brugere og deres data. For at teste og debugge systemet, er det nødvendigt at have en webserver. Til dette har jeg valgt en apache 2.0 webserver, som er sat op på et MS Windows styresystem. I denne opgave vil jeg dog kun fokusere på sikkerheden i forbindelse med PHP koden og databasen. Jeg vil derfor forudsætte at web-serveren er konfigureret korrekt. Da jeg har valgt at anvende PHP som script sprog giver dette os også nogle begrænsninger. PHP er et server side sprog og vi vil derfor ikke være i stand til at eksekvere kode på bruger siden (client side). Side 5 af 48

6 Planlægningsfasen Kravspecifikation 1. Introduktion 1.1. Formål. At fastlægge kravene for prototypen af et billeddelings systemet. De efterfølgende krav er tænkt som en prototype af programmet Overblik. Jeg har valgt at dele kravspecifikationen i 3 dele. 1. afsnit skal give en kort introduktion. 2. afsnit giver et indblik i systemets generelle funktioner. I 3. afsnit vil jeg gennemgå systemets tiltænkte funktioner mere specifikt. 2. Overblik 2.1. Produktets formål. Programmet skal gøre brugere i stand til at dele digitale billeder med hinanden. Det skal gøres på en nem og sikker måde. Brugergrænsefladen vil være rettet mod IE (Internet Explorer), og vil blive placeret på en web-server så brugere vil kunne få adgang til det ved hjælp af en aktiv Internetforbindelse og en maskine med IE Produktets funktioner. Systemet skal tilbyde følgende funktioner: o Oprette en bruger o Brugerinddeling Admininistrator/Bruger (om ikke andet til senere udvidelse) o Upload af billede o Billede management til redigering/deling/sletning af billeder o En måde at vise billeder o En måde at overskueliggøre delinger af billeder for brugeren. Funktionerne er beskrevet mere detaljeret i Brugere. Programmets brugere defineres som personer der har oprettet sig som bruger på registrerings siden. Brugerne vil kunne blive instrueret v.h.a. en vejledning som kunne tilføjes på hjemmesiden. 3. Specifikke krav 3.1. Grænseflader Brugergrænseflade. Vil være designet minimalt men funktionel, med henblik på at være simpel og overskuelig. Dette skulle gerne hjælpe bruger til at handle intuitivt selv om der er tale om en prototype Funktionelle krav Forside: Login boks som giver mulighed for at logge ind i systemet Link til registrerings side Evt. mulighed for udvidelser som kontakt og præsentation af relevant system info Registrering/opret kunde En form der kan holde alt relevant information om en kunde Alt information skal kontrolleres inden det skrives til databasen Login Her kontrolleres Brugernavn og Password Data skal skrives til en cookie (krypteret) til brug gennem hele systemet Main Main skal indeholde en oversigt med menu over resten af hele systemet. Denne menu skal være med til at overskueliggøre for brugeren, hvor han befinder sig. Den skal indholde links til de vigtigste hovedfunktioner i systemet. Dvs. Visning af billeder, Styring af billeder og Upload af billeder Det skal herfra være muligt at logge ud af systemet Denne side skal fungere som portal til de andre sider som linker ud fra denne. Derved styrker det også brugerens overblik Album overview Der skal være en overskuelig oversigt over en brugers mapper Bruger skal kunne se hvilke mapper andre brugere deler med ham Side 6 af 48

7 Hvis en bruger trykker på en mappe, får han vist indholdet af den pågældende mappe. Dette skal ske ved hjælp af paging så en bruger selv kan vælge hvor mange billeder han ønsker at få vist pr side. Hvis der kun vises et billede skal der også vises tilhørende kommentarer Ved hver mappe skal der vises beskrivelse af mappens indhold Management Det skal være muligt at slette mapper, der skal dog være et tjek først der sikrer at en bruger ikke kommer til at slette en mappe ved et uheld Det skal være muligt for en bruger at dele en mappe med en anden bruger. Når han har valgt en mappe og trykker på share, vil han blive sendt videre til en anden side, hvor han kan vælge hvilken bruger, han ønsker at dele mappen med En given bruger skal kunne se hvilke mapper andre deler med ham Brugeren skal kunne fjerne en mappe som en anden bruger har delt med ham Brugeren skal kunne se hvilke mapper han deler med andre Brugeren skal kunne fjerne en sådan deling, hvis han ikke længere ønsker at have denne mappe delt med den pågældende person En bruger skal kunne trykke på en mappe han ejer og derved få vist indholdet Her skal han så kunne se navn billede Der skal være en mulighed for at ændre informationerne for et givent billede, dvs. navn og beskrivelse Upload Her skal være en oversigt over hvilke mapper man ejer Man skal have mulighed for at oprette en ny mappe med tilhørende beskrivelse Man skal vælge en mappe som man vil uploade til Man skal have vist indholdet af mappen Det skal være muligt at browse et billede Bet skal være muligt at ændre navn på billede Brugeren skal kunne tilføje en beskrivelse til det billede han ønsker at uploade. Side 7 af 48

8 Risikostyring Ved et projekter som dette, er det en god ide at tage stilling til ting som sygdom og sikkerhed af projekt data. Så man f.eks. ikke mister hele projektet hvis ens harddisk skulle gå i stykker. Nedenfor har jeg kort beskrevet hvad jeg har gjort for at imødekomme sådanne uforudsete hændelser. Sygdom Da projektet bliver udarbejdet over en 10 ugers periode, er det usandsynligt at jeg skulle ligge mig syg. Skulle det alligevel ske, vil en enkelt sygedag eller 2 være til at arbejde ind igen. Hvis det ikke forekommer i slutningen af projektet! Skulle jeg i værste fald ligge syg længere end 4-5 dage, kan det gå hen at blive nødvendigt, at få udskudt aflevering af projektet et tilsvarende antal dage. I så fald er det nødvendigt at skaffe en læge erklæring. Filer For at mindske risikoen for tab af data, har jeg valgt at arbejde med 3 sikkerheds kopier. Grunden til dette er at jo længere hen i projektet jeg kommer, desto mere fatalt vil det være at miste data. Jeg har derfor valgt fra starten at arbejde med 2 backup kopier. Da jeg har 2 harddiske i min maskine har jeg valgt at have en kopi på mit andet drev. Derved vil jeg have en kopi hvis den ene harddisk skulle gå i stykker. Den anden backup er forhåbentligt overflødig, men jeg har valgt at have den for ekstra sikkerheds skyld, for at imødekomme f.eks. indbrud. Den ligger på en usb key som jeg holder adskilt fra computeren, når den ikke er tilsluttet for at opdatere den pågældende backup. Side 8 af 48

9 Iterationsplan Procentværdi af tid brugt per iteration Overvejelser/planlægning Use Case Tidsdeling Diagrammer Design Implementering Test Rapport 1. Iteration 2. Iteration 3. Iteration Ovenstående diagram skal ses mere som en cirka angivelse. Jeg mener dog at den viser meget godt hvordan jeg vil vælge at fordele min tid. Jeg har fra projektets start vidst, at jeg ville benytte mig af 3 iterationer. Jeg har erfaringer med at dette hjælper til at øge overskueligheden af et projekt og derved mindske risikoen for fejl. I første iteration vil jeg fokusere meget på analysen af min problemstilling. Jeg mener dette er vigtigt, da det er denne analyse der skal danne grundlaget for hele mit projekt. I analysen vil jeg lave Use Case og sekvensdiagrammer for de centrale dele af systemet. Jeg vil ligeledes i første iteration begynde at designe mit program, dels for at få en ide om hvordan det kommer til at se ud og fungere, og dels for at gøre det så brugervenligt og overskueligt som muligt. Jeg vil derfor også begynde at kode en skabelon af GUIén til mit produkt. Denne vil indeholde CSS design og menu til mit produkt. Der vil ikke i første iteration ikke blive kodet på databasen. Den vil dog blive designet her men vil først blive implementeret i anden iteration. I anden iteration vil jeg implementere databasen og de centrale dele af systemet. Dette skal gøres tæt op af de Use case og sekvens diagrammer, som blev udviklet i første iteration, så jeg ikke kommer til at afvige unødigt fra disse. Der kan dog være tilfælde, hvor man vælger at ændre lidt i disse, da man nogle gange kan støde på en mere hensigtsmæssige løsning. I sådan tilfælde er det Side 9 af 48

10 vigtigt at vende tilbage til sine Use case og sekvens diagrammer og opdatere dem, så man hele tiden sikrer overensstemmelse mellem disse og ens program kode. Efterhånden som jeg får afsluttet implementeringen af en funktion vil jeg teste den, så jeg er sikker på at funktionaliteten er i orden. Derved håber jeg også på at minimere risikoen for sikkerhedshuller i systemet. I denne iteration vil jeg ligeledes påbegynde skrivningen af rapport. I tredje og sidste iteration skal alle de centrale dele af systemet gerne være implementeret. Her skal der så ryddes op og finpudses i koden, så den er klar til de endelige tests. Fokus vil i denne iteration primært være på rapport der skal udarbejdes. Tests af det samlede system vil fylde en del i denne iteration for at finde evt.fejl i den endelige prototype. Hvis disse ikke umiddelbart kan rettes vil de blive dokumenteret i afsnittet Fejl og mangler i rapport. Analyse Begrundelse For Valg Af Opgave Jeg har valgt denne opgave, fordi jeg mener den indeholder nogle relevante og interessante problemstillinger af både sikkerhedsmæssig og programmeringsmæssig karakter. I disse år bliver det mere og mere almindeligt for personer at have et digitalt kamera. Samtidigt med at folk rejser mere og længere, kunne man forestille sig et stigende behov for at man ønsker at kunne dele oplevelser med venner og bekendte hjemme. Dette skal de kunne gøre på en forsvarlig måde, hvorpå ingen andre end dem, de ønsker, skal kunne få adgang til billederne, da det ellers vil kunne krænke deres privatliv.. Jeg vil derfor i denne opgave prøve at lave et projekt, der illustrerer en måde at dele digitale billeder på. Det skal være så sikkert som muligt i forhold til både ondsindede brugere, og brugere der vil dele billeder af tvivlsom karakter. Side 10 af 48

11 Brainstorm Jeg har valgt at inkludere den brainstorm jeg startede med i begyndelsen af dette projekt. Jeg mener at den illustrerer nogle af de ting, jeg har valgt at fokusere på i udviklingen af mit system. Både med hensyn til sikkerheden, funktionaliteten og designet. Programmet skal være overskueligt og simpelt. Alt personfølsomt data i login cookien skal være krypteret. Hver gang der vises en ny side skal der kontrolleres om brugeren stadig er logget ind. Derved sikrer jeg løbende, at han er den, han udgiver sig for at være. Billederne kan gemmes på 2 måder enten i en BLOG i selve databasen eller som en fil og et link i databasen der så peger til placeringen af billedet. Hvis metoden med linket vælges så vær opmærksom på at billederne skal placeres uden for webserveren for at hindre en bruger i at se billeder, der ikke er hans. Hvis billederne derimod bliver gemt direkte i databasen som en BLOG skal de så krypteres? Når en bruger deler en mappe skal både han og modtageren kunne vælge at fjerne delingen. Det er kun ejeren, der skal kunne slette et billede fra systemet. Han skal dog ikke kunne slette billedet fysisk fra harddisk, da en bruger ikke skal have lov til at slette filer gennem systemet. Jo mere velkendt man kan lave mappe inddelingen des lettere vil det virke for brugeren. En bruger skal kunne tilføje en kommentar til hvert billede. Derved vil andre der får delt billede kunne få en forklaring af billedet. En bruger skal kunne redigere i informationerne til et billede, efter han har uploadet det. Side 11 af 48

12 Use Case Diagram Af: Peter Bech Se bilag 2 for forklarende Use Case scenarier. Side 12 af 48

13 Design Designet af systemet skal danne grundlag for at systemet bliver sikkert, funktionelt og overskueligt. Det er vigtigt, at det bliver lavet på en overskuelig og anvendelig måde for at skabe overblik under implementeringen. Det skal vise samspillet mellem de forskellige dele af systemet. Dvs. vise hvordan de enkelte klasser og funktioner arbejder sammen med hinanden og databasen. Arkitektur For at skabe et overblik af systemet, har jeg lavet en lagdelt grafisk præsentation. Den skal illustrere hvordan systemet er bygget op. Hvert lag kan sende data til laget under sig og returnere til laget over sig. Dette er gjort for at øge sikkerheden i systemet, da jeg ikke er interesseret i at en bruger sender data til databasen uden at det er blevet kontrolleret. Hvis dette lykkes for ham, vil han formodentligt kunne benytte sig af f.eks. SQL injection og derved kompromittere systemet. Nedenfor vil jeg gennemgå hvert enkelt lag og dets funktion. Side 13 af 48

14 User layer: Dette lag vil blive bygget op ved hjælp af html og CSS. Det er hvad bruger kommer til at se, når han anvender systemet. Det er derfor vigtigt, at der tænkes over interfacet, så det bliver intuitivt at anvende. Dette gøres for at lette brugers bevægelse gennem systemet og holde det så simpelt som muligt. Til at designe layoutet på siden har jeg valgt at benytte mig af CSS. Dette giver flere fordele. Det bliver lettere at styre systemets udseende og lettere at ændre senere, hvis dette skulle ønskes. Det giver samtidig mulighed for at ændre f.eks. scroll bars og lignende hvis dette skulle have ens interesse. Jeg har valgt et simpelt design til systemet som set nedenfor. Banneret giver sig selv.her vil der blive vist et billede med systemets navn. Nedenfor banneret er der en navigations bar, som jeg har valgt at dele op i to dele: topnav og topnavright. Den venstre halvdel topnav bliver ikke brugt i selve systemet, som det er nu. Men tanken bag den er, at den i senere udvidelse enten til kunne blive brugt til at holde links til andre Side 14 af 48

15 dele af systemet eller blive brugt til at hjælpe en bruger med at navigere rundt i systemet ved at give ham en sti over hvor han befinder sig i systemet. F.eks. Rediger_billed\Billede_folder_navn\Billed_navn Den højre halvdel vil derimod blive brugt i systemet. Den vil indeholde et link til at logge ud af systemet. Det vil sætte en bruger i stand til at logge ud fra et hvilket som helst sted i systemet. Nedenfor vil selve hovedmenuen være. Jeg har valgt at kalde den leftnav. Den vil fungere som nagivations bar for hele systemet. Det er her en bruger kan vælge hvad han/hun ønsker af foretage sig. Ved siden af leftnav er main placeret. Main er præsentations delen af gui en og vil blive brugt til at vise billeder eller funktioner som f.eks. upload af billeder. Jeg har valgt at hele layoutet af siden skal bygges op som % angivelser som eks: position:absolute; left:15%; top:2%; height:26%; width:70%; På den måde får jeg en mere fleksibel side, der vil kunne benyttes ved forskellige skærmopløsninger og stadig se ud, som jeg havde til hensigt. Nedenfor ses det endelige layout. Side 15 af 48

16 Til dette lag hører også den cookie, som jeg vil bruge til at kontrollere om en bruger er logget ind i systemet. Grunden til at cookien tilhører dette lag er, at brugeren har direkte adgang til den. Derfor udgør den også en mulig sikkerhedsrisiko. Derfor er det vigtigt at minimere mængden af informationer den indeholder. Derved vil den fortælle en mulig ondsindet bruger så lidt om systemet som muligt. Jeg har valgt at min cookie skal indholde følgende informationer: -Kundenummer (ingen) -Brugernavn (md5) -Password (sha1) -Userlevel (md5) Dette er meget brugerfølsomme data, hvis de skulle blive stjålet af en anden bruger. Derfor kan disse data selvfølgelig ikke gemmes som klartekst i cookien. Jeg har derfor valgt at benytte 2 forskellige krypterings metoder til at kryptere disse informationer (se parenteserne ovenover). Side 16 af 48

17 Grunden til at jeg har valgt at kryptere med 2 forskellige algoritmer er ønsket om at vanskeliggøre processen for en ondsindet bruger. For en detaljeret beskrivelse af hvordan login fasen fungerer se afsnittet login Function layer Dette lag består af to dele, PHP funtions og SQL functions. Det er dette lag, der laver al behandling af data. Som f.eks. at sende requests til databasen og returnere arrays med oplysninger til User layer. De sendte requests skal dog først igennem Security layer, som er beskrevet nedenfor.alle funktioner der er indeholdt i funktionslaget vil blive beskrevet i implementeringsafsnittet. Der henvises til dette. Security layer Security layer har til opgave at kontrollere alle forespørgsler og alt data der kommer til databasen fra systemet. Dette er ekstremt vigtigt, for at forhindre ondsindede brugere i misbrug. Måden jeg vil gøre dette på er ved at kontrollere alle variabler der bruges i forespørgsler til databasen. Dette kan jeg gøre, fordi jeg på den måde ved hvad jeg forventer en given variable indeholder. Hvis den ikke indeholder en forventet og dermed lovlig værdi, vil forespørgslen ikke få lov til at blive eksekveret. Til at bestemme hvad en given variable må indeholde vil jeg anvende regular expressions, som er særdeles effektiv til den opgave. Derved kan jeg præcisere hvad en given variabel må indeholde. De enkelte kontrolfunktioner vil blive forklaret i implementations afsnittet(se dbcontrol.php). Database layer Dette lag består af selve databasen. Det er her alle oplysninger vil blive gemt såsom placering af billeder, kundeoplysninger og deslige. Jeg har valgt at lave en simpel, men funktionel database, som jeg har normaliseret til 3NF (Normal form). Nedenfor er vist et diagram over det endelige database design. Side 17 af 48

18 Der er et sted, hvor jeg har valgt at afvige fra 3NF. I tabellen Kundeoplysninger finder man Postnummer og Bynavn i samme tabel. Dette strider mod princippet om at dele relaterede kolonner i separate tabeller og give dem en primær nøgle som så bliver en foreign key i den gamle tabel. Man kan nemlig her tage Postnummer og Bynavn, lave en ny tabel og så bruge Postnummer som foreign key i tabellen kundeoplysninger. Jeg har valgt ikke at gøre det, da jeg i denne sammenhæng finder det overflødigt. I en større database vil dette dog kunne gøres med nogen fordel. Funktionalitet I dette afsnit, vil jeg gennemgå den måde, jeg har valgt at designe de centrale dele af systemet. Login Login funktionaliteten af systemet består af to dele. I User Layer eller på brugerniveau, har vi cookien. Denne indeholder oplysninger til at identificere en bruger. Den indeholder som tidligere nævnt fire variabler. -Kundenummer (ingen) -Brugernavn (md5) -Password (sha1) -Userlevel (md5) De samme variabler findes også i databasen. Her bliver de dog lagret på følgende måde af sikkerhedsmæssige årsager.. Side 18 af 48

19 -Kundenummer (ingen) -Brugernavn (ingen) -Password md5(sha1(password)) -Userlevel (ingen) Som man bemærker, er det kun password jeg har valgt at kryptere i databasen, og endda både med md5 og sha1. Jeg er ikke interesseret i at levere mere information end højst nødvendigt i klartekst,men vil samtidig heller ikke levere krypteret tekst direkte fra databasen. Jeg har valgt at løse problemet på denne måde, fordi cookien er på brugerniveau og dermed en sikkerheds risiko. Den kan blive hijacket eller ændret på anden måde for at en ondsindet bruger på den måde kan tiltvinge sig adgang til systemet. Det er svært at sikre sig mod hijacking af cookies, hvor en ondsindet bruger opsnapper cookien og derved kan udgive sig for at være brugeren. En måde at gøre dette på er ved at lagre ip adressen og kontrollere på denne ved hver request der sendes til siden. Dette er dog ikke implemeneret og derfor er dette system sårbart over for cookie hijacking. Hvad angår ændring af brugerinformation i cookien, har jeg valgt at lave brugerkontrol hver gang en bruger foretager en handling i systemet bliver han kontrolleret på følgende måde: if($_cookie[user] == md5($login_data[username])&& md5($_cookie[pass]) == $login_data[password]) { } else { header("location: /main.php?pathid=0"); } På denne måde sikrer jeg at en bruger, hvis oplysninger ikke stemmer overens med dem i databasen vil blive logget ud af systemet og sendt tilbage til forsiden. Umiddelbart har en ondsindet bruger ikke interesse i at ændre brugernavn og password, hvis han i stedet bare kan ændre kundenummeret, og derved skifte bruger identitet. Dette sikrer jeg også i mod ved ovenstående kontrol. $Login_data bliver sat ved følgende funktion. $login_data = check_login($_cookie[kundenummer]); Side 19 af 48

20 Denne funktion bliver kaldt, hver gang en bruger foretager en handling. Dette vil medføre at hvis en ondsindet bruger prøver at ændre kundenummeret i cookien så vil $login_data ændre sig. Dette medfører at brugerinformationerne i cookien og brugerinformationerne i $login_data ikke længere er ens. Bruger vil derfor blive logget ud af systemet og returneret til forsiden, når han foretager en handling. Check_login funktionen returnerer også Userlevel, som er den variabel, der angiver hvorvidt en bruger er en administrator. Denne variabel vil også have interesse for en ondsindet bruger, da administrator adgang for en sådan, altid vil være at noget at stræbe efter. Jeg har en administrator menu, som kun vil blive vist hvis følgende validerer:. if($_cookie[userlevel]==md5($login_data[userlevel])&&login_data[userlevel] == 1) {?> <tr><td><a href=main.php?pathid=99>admin tools</a></td></tr> <?PHP }?> Han vil derfor ikke få vist administrator menuen, uanset om han ændrer sin userlevel eller ej. (Medmindre hans userlevel i databasen også er 1, og derved vil han i forvejen være en administrator). Skulle en ondsindet bruger alligevel finde en work around, vil der være endnu et sikkerheds check, som ser ud som nedenstående. if($_cookie[user] == md5($login_data[username]) && md5($_cookie[pass]) == $login_data[password] && $_COOKIE[userlevel] == md5($login_data[userlevel]) && $login_data[userlevel] == 1) { header("location: PHP/administrator.php"); } else { header("location: /main.php?pathid=0"); } Side 20 af 48

21 Derved vil han blive logget ud af systemet, hvis oplysningerne i cookien ikke stemmer overens med dem fra databasen. Upload og lagring billeder Til at lagre billeder har jeg kigget på 2 muligheder (se brainstorm).jeg har valgt at lagre billederne på serveren og så gemme et link til det enkelte billede i en database. Jeg mener at gemme billeder direkte i database, strider i mod en databases fundamentale principper, der bygger på, at alt data skal være simpel og entydig. Jeg har i denne prototype valgt at gemme billederne inde på selve webserveren, på følgende måde: $path = $_SERVER['DOCUMENT_ROOT']; $folder = "/archives/"; $dirname = $folder. $stackid; $link = $path. $dirname; $uploaddir = $link move_uploaded_file($filetmpname, $uploaddir. '/'. $filename) Dette udsagn er placeret som statement i en if sætning. Returnerer dette udsagn sandt vil følgende funktion blive eksekveret, der så vil oprette alle de relevante informationer i tabellerne. $full_link = $uploaddir. '/'. $filename; $uploadprogress = create_billed($filename, $beskrivelse, $full_link, $stackid); Det bør bemærkes, at det bestemt ikke er hensigtsmæssigt at lagre filerne på selve webserveren. Dette vil medføre at en hvilken som helst bruger, vil kunne få adgang til dem ved at browse rundt. Det er derfor af afgørende betydning, at billederne ved en udvidelse af systemet bliver placeret udenfor selve webserveren, da dette ellers vil medføre en alvorlig sikkerhedsbrist. Selve upload siden er blevet designet i 2 dele. På den første del har brugeren mulighed for at vælge en mappe eller billedstak om man vil, hvor han eller hun kan uploade et billede til. Eller brugeren kan oprette en helt ny mappe. Denne mappe / billedstak vil svare til en mappe på serveren. Denne side ser i den endelige prototype således ud. Side 21 af 48

22 Når en bruger vælger en mappe, vil han blive sendt videre til næste side, hvor han har mulighed for at vælge et billede som han ønsker at uploade. Han kan samtidig ændre navn på det eller tilføje en beskrivelse. Dette vil han dog også kunne gøre senere. Selve designet ser således ud, når en bruger har valgt en mappe at uploade et billede til: Side 22 af 48

23 Deling af billeder For at en bruger kan dele en billedmappe med en anden bruger kræver det, at han ejer rettigheder over den pågældende mappe. Dette sikre jeg mig ved kun at vise de mapper i formen som brugeren har relation 1 over. Det vil sige, at han ejer mappen. Jeg benytter mig af funktionen: user_stacks($_cookie[kundenummer], 1); Som det kan ses tager denne funktion et 1 tal som argument, hvilket er relationen (for en nærmere beskrivelse se implementering). En bruger vil nu kunne dele mappen og hele dens indhold med en anden bruger. Dette sker ved at brugeren som skal have tildelt mappen får den tilføjet i tabellen kundetilbillede, Dette sker med relation 0, der er tegn på at mappen er en mappe, som han har fået tildelt. Han vil derfor hverken kunne slette eller redigere noget i denne mappe. Han vil dog være i stand til at se billederne som den indeholder ved hjælp af visningen. Visning af billeder Visningen af billeder vil foregå ved hjælp af paging. Som det er nu vil der kun kunne vises et billede per side. Men funktionerne der tager sig af pagingen, er udvidet til at kunne returnere flere billeder og dermed flere billeder per side. Ved visning af et billede vil der blive vist navn, og en eventuelt beskrivelse, hvis en sådan er indtastet til det givne billede. Her under ses et eksempel på den endelige implementering. Side 23 af 48

24 Det bør bemærkes af billederne som det er nu vil blive vist ved en størrelse på 60 % af deres originale størrelse. Se fejl og fremtidige forbedringer for mere information. Sletning af billeder Sletning af billeder er en lidt omstændelig affære. Jeg vil ikke tillade at en bruger skal kunne slette filer på selve serveren. En af grundene til dette er, at en bruger kunne finde på at dele billeder med andre, som har en tvivlsom karakter. Hvis en bruger uden videre kan slette disse igen vil de være svære at frembringe, i tilfældet af at de skal bruges til en senere retssag. I stedet har jeg valgt at begrænse mig til, at en bruger kun kan slette en hel billedstak fra databasen. Den vil dog stadig ligge fysisk på serveren. En billedstak vil blive fjernet ved hjælp af følgende 3 sql sætninger: $query = "DELETE FROM kundetilbilled WHERE Billedstak = '$stack'"; $query = "DELETE FROM billedstak WHERE Billedstak = '$stack'"; Side 24 af 48

25 $query = "DELETE FROM staktilbillede WHERE Billedstak = '$stack'"; På denne måde fjerner vi alle relationer, og billedstakken vil for brugeren se ud, som om den er fjernet helt. Som man kan se bliver billederne ikke fjernet fra tabellen billeder. Dette er der en grund til. På den måde vil en administrator kunne implementere en funktion, så han kan se hvilke billeder der ligger på serveren og fjerne disse efter f.eks. 5 år. For at se forslag til hvorledes en sådan funktion vil kunne fungere se mulige udvidelser. Side 25 af 48

26 Implementering I dette afsnit vil jeg beskrive de funktioner, jeg har lavet i hver klasse. De vil blive gennemgået klasse for klasse. Ved hvert afsnits start vil jeg kort forklare, hvad formålet er med hver enkelt klasse. administrator.php Administrator.php, er den side som kun en given administrator har adgang til. Den indeholder ikke nogen funktioner i øjeblikket. Der er lavet et sikkerheds check, der kontrollerer at en bruger virkelig har administrator rettigheder. Dette sikrer, at siden ikke kan blive vist til en tilfældig bruger, der indtaster det direkte link i sin browser. Hvordan dette check fungerer, er forklaret i afsnittet login i design delen af rapporten. album.php Album.php, er den side, der tager sig af præsentationen af billeder. Den benytter sig af funktioner fra: dblogin.php dbpicture.php dbupload.php Selve siden er delt op i to dele, der trigger på om en stack er valgt eller ej. Er der ikke valgt en stack, vil album.php vise alle tilgængelige mapper(stacks). Når brugeren så vælger en stack vil siden reloade med en sat stack som følger: Den satte stack vil først blive kontrolleret, for at sikre at brugeren har rettigheder til at se den valgte stack. Men også for at sikre, at han ikke har prøvet at skrive noget andet end et stacknummer ind i denne variable. Validerer dette check ikke vil han blive logget ud af systemet uden advarsel. Validerer dette check vil siden, per default, vise første billede i mappen. Men da siden her benytter sig af paging, vil der, hvis der er flere billeder i mappen, komme en menu i bunden hvor brugeren kan bladre i billederne. For at denne menu fungerer er jeg nødt til at benytte mig af en variable mere. Derfor kommer mit link til at se således ud: Side 26 af 48

27 Page er variablen, der fortæller hvor i billedstakken vi befinder os, så min paging menu fungerer korrekt. dbcontrol.php Denne fil indeholder funktioner til at kontrollere alle variabler, der bliver anvendt i forbindelse med min database. Jeg benytter eregi, som ikke er case sensitiv, til at kontrollere et udsagn. Derved er det ikke nødvendigt at tilføje high case karakterer til de enkelte regular expression (regex). validate_text($text) Denne funktion bliver brugt til at kontrollere bl.a. fornavn og efternavn. Den anvender et regex der ser således ud: "^[a-z]{1,32}$" validate_addresse($addresse) Denne funktion benytter jeg til at validere en adresse. Denne skal kunne indeholde tal, bogstaver og mellemrum. Derfor ser det regex således ud: "^[0-9a-z ]{1,32}$" validate_postnummer($postnummer) Funktionen har til formål at validere et postnummer. Et postnummer består af 4 tal hvilket får dette regex til at se således ud: "^[0-9]{4}$" validate_telefonnummer($telefonnummer) Et telefonnummer består som minimum af 8 tal, hertil kan komme 2 tal mere for landekode og et +. Derfor kommer mit regex til at se sådan ud: "^[0-9\+]{8,12}$" validate_ ($ ) For at validere en har jeg valgt følgende regex: "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[az0-9-]+)*$" Dette regex tillader en adresse der må indeholde tal, bogstaver, _,.. Den skal indeholde og et punktum efterfulgt af bogstaver og tal. Side 27 af 48

28 validate_user($user) Denne funktion anvender jeg til at validere et username, det tillader en bruger at benytte tal, bogstaver, underscore og bindestreg i brugernavnet. Det regex jeg benytter ser således ud: "^[_a-z0-9-]{1,32}$" validate_kundenummer($kundenummer) Denne funktion bliver brugt til at validere et kundenummer. Kundenummeret bliver genereret af systemet og består udelukkende af tal. Derfor ser det regex som jeg anvender således ud: "^[0-9]{1,12}$" validate_stackname($stackname) Et stackname er navnet på en bruger-oprettet mappe (stack). Dette navn må indeholde tal, bogstaver og mellemrum. Dette gør brugeren i stand til at navngive en mappe med f.eks. dato og sted. Det regex som jeg benytter til at validere et mappenavn med ser således ud: "^[a-z0-9 ]{1,100}$" validate_beskrivelse($beskrivelse) En beskrivelse bliver benyttet til at beskrive en mappe eller et billede. Denne funktion benyttes til at validere et sådanne: "^[a-z0-9\.,:() ]{1,250}$" validate_stack($stack) En stack er et autogeneret nummer som benyttes til at identificere en billedstak. Dette nummer består af tal. Der får derfor mit regex til at se således ud: "^[0-9]{1,11}$" validate_billedid($billedid) Et billedid bliver benyttet til at identificere et billede. Dette id er ligesom ovenstående autogeneret og derfor ser det anvendte regex ud som stack-regex: "^[0-9]{1,11}$" Side 28 af 48

29 validate_billednavn($billednavn) Billednavn er navnet på det billede som brugeren vælger at uploade, eller det navn han tildeler billedet hvis han ønsker at ændre navnet. Et billednavn må bestå af tal, bogstaver og punktum. Derfor har jeg valgt at mit regex skal se således ud: "^[a-z0-9.]{1,100}$" Man kunne vælge at udspecificere det mere ved at sige at navnet på et billede skal ende på et punktum og så 3 karakterer. Det har jeg dog valgt ikke at gøre da jeg her benytter en anden form for kontrol. (Se fileprocess.php) validate_relation($relation) En relation er den variable der benyttes til at bestemme om en bruger er ejer af en billedstak. Til dette benyttes 0 eller 1. Jeg har dog valgt at medbringe 2 også i tilfældet af en senere udvidelse. Det regex jeg anvender ser således ud: "^[0-2]{1}$" get_stack_relation($kundenummer, $stack) Denne funktion bliver benyttet i album.php til at kontrollere at den stack som er blevet valgt virkelig har et tilhørsforhold til brugeren. Man kan forestille sig at en ondsindet bruger ville prøve at ændre dette nummer for at tiltvinge sig adgang til billedmapper, som han ikke har rettigheder til at se. dblogin.php Dblogin.php, indeholder funktioner til brug ved login og kontrol gennem systemet. Den indeholder 2 funktioner som er beskrevet nedenfor. get_user($user, $pass) Tager $user og $pass som argument. Den benyttes når en bruger logger ind i systemet. Hvis username og password findes som en række i tabellen loginfo, vil det sige at begge Side 29 af 48

30 dele er indtastet korrekt. Den vil så returnere kundenummer, username, password og userlevel. Disse vil blive skrevet til den cookie, der vil blive anvendt gennem resten af systemet check_login($kundenummer) Denne funktion vil blive kaldt hver gang en bruger trykker på et link i systemet, efter han / hun er logget ind. Den vil returnere username, password og userlevel, til det kundenummer, som bliver anvendt som argument. Disse vil blive anvendt for at kontrollere at en bruger stadig er logget ind og anvender det korrekte kundenummer. dbmanagement.php Indeholder alle funktionerne som vil blive benyttet til management delen af systemet. F.eks. Hver gang en bruger vil dele eller slette et billede, vil han benytte funktioner fra denne fil. Denne klasse er en af de centrale dele af systemet og indeholder mange af de funktioner som er grundlæggende for systemet. function get_usernames() Når en bruger vil dele en mappe med en anden bruger, benytter han en dropboks med alle brugernavne i systemet. Denne funktion leverer alle brugernavne til den dropboks. Det bør dog bemærkes at dette ikke er hensigtsmæssigt i et større system, så der er man nødt til at finde på en anden løsning. (Se fejl og mangler) share($owner_kundenummer, $reciver_kundenummer, $stack) Denne funktion sørger for at dele en mappe med en anden bruger. Den tager owner_kundenummer, reciever_kundenummer og stack som argumenter. Den kontrollerer så om owner_kundenummeret virkelig er ejer af billedmappen. Er dette tilfældet vil den tilføje Side 30 af 48

31 billedstakken med nummeret stack til modtageren (reciever_kundenummer). Da der ikke er implementeret fejl koder i denne del, vil den returnere til: header("location: /PHP/management.php"); Dette vil den gøre også selv om det ikke lykkes at dele mappen. (se management.php for mere information) function remove($kundenummer, $stack) Denne funktion bruges af en bruger, der har fået tildelt en mappe, som han ikke længere ønsker at have adgang til. Den kontrollerer at brugeren har fået mappen delt og at han ikke er ejer. Er dette tilfældet vil den fjerne delingen i tabellen kundetilbilled. Der er ligeledes ikke implementeret fejl håndtering i denne del, derfor vil den ligeledes returnere til header("location: /PHP/management.php"); delete($kundenummer, $stack Denne funktion bruges til at slette en mappe. Den tager kundenummer og stack som argumenter, hvor stack er den mappe der ønskes slettet. Funktionen kontrollerer først at brugeren ejer den mappe, han ønsker at slette. Er dette tilfældet, vil den fjerne alle rækker i kundetilbilled der indeholder den pågældende billedstak (stack). Den vil efterfølgende fjerne rækken fra billedstak og til sidst fjerne alle rækker i staktilbillede der indeholder denne billedstak. (se evt. sletning af billeder under funktionalitet.) shared_stacks($kundenummer) Denne funktion returnerer alle mapper og kundenumre som en bruger deler med andre. get_username($kundenummer) Returnerer et brugernavn til et givet kundenummer. Denne funktion bruges sammen med shared_stacks så en bruger kan se hvilke mapper han deler med hvem. Side 31 af 48

32 Unshare($owner_kundenummer, $reciver_kundenummer, $stack) Denne funktion bruges til at fjerne en deling af en mappe med en given bruger. Der er ikke implementeret fejlhåndtering til denne funktion så den returnerer til : header("location: /PHP/management.php"); dbpicture.php Denne fil indeholder funktioner til visning af billeder. Det er denne klasse der indeholder funktionerne der tager sig af paging. Til at page bruger jeg 2 funktioner: get_billedid_paged og pager. De tager begge variablen $rows. Denne er ikke blevet implementeret, men sættes default i album.php til 1. Det er denne variable, der styrer hvor mange billeder der skal være pr side. (Pagingen bygger på følgende script fundet på nettet se under referencer for link) get_billedid_paged($stack, $rows, $page) Som en del af pagingen, tager denne funktion en given stack og returnerer alle billedid er der tilhører denne billedstak og som er inden for det fastsatte limit. pager($rows, $stack, $pagenum) Denne funktion tager sig af selve pagingen den sørger for at skrive selve navigations menuen og de tilhørernde links. get_billedid($stack) Denne funktion tager en stack som argument og returnerer alle tilhørende billedid er. Præcis som ovenstående dog uden paging get_billede($billedid) Denne funktion tager et billedid og returnerer Billednavn, Beskrivelse og Link. dbpictureedit.php dbpictureedit.php indeholder en enkelt funktion. Denne funktion sørger for at opdatere et billede, hvis en bruger ønsker at ændre i navn eller beskrivelse af et billede. Denne klasse bliver kaldt af en Side 32 af 48

33 form, som benytter sig af den globale $_POST variable. Det er derfor vigtigt at kontrollerer alle vores variabler efter vi har hentet dem: $billednavn = $_POST['billednavn']; $beskrivelse = $_POST['beskrivelse']; $stackid = $_POST['stack']; $edit_billed = $_POST['edit']; Efter at variablerne er blevet valideret, kontrollerer funktionen, at brugeren har ejerrettigheder over billedet. Er dette tilfældet vil Billednavn og Beskrivelse blive opdateret og bruger vil blive returneret til: header("location: /PHP/pictureedit.php?stack=$stackid&edit=$edit_billed&rtn=1") Det er værd at bemærke at variablen rtn er til fejlhåndtering. dbregister.php Denne klasse indeholder alle funktioner til at oprette en person i databasen som en bruger. Den består af 2 funktioner som vil blive beskrevet nedenfor. create_user($fornavn, $efternavn, $addresse, $postnummer, $by, $telefonnummer, $ , $user, $pass, $repass) Tager sig af fejlhåndteringen, validerer alle if sætningerne kalder den nedenstående funktion. make_user($fornavn, $efternavn, $addresse, $postnummer, $by, $telefonnummer, $ , $user, $pass) Denne funktion tager sig af oprettelsen af brugeren i databasen. check_username($user) Denne funktion bruges til at kontrollere om et brugernavn er i brug i forvejen. Det bør bemærkes at adressen ikke bliver valideret, da min database ikke vil Derfor er det pt. ikke muligt at skrive en adresse ned i databasen. Derfor er validering slået fra, så den ikke kræver en adresse skrevet ind i feltet for at få det valideret. dbupload.php dbupload.php indeholder de funktioner der bliver anvendt i forbindelse med upload af en fil. Samt et par funktioner til designet af upload.php. Side 33 af 48

34 create_stack($kundenummer, $stackname, $beskrivelse) Denne funktion opretter en ny mappe / billedstak, og sætter brugeren med det givne kundenavn som ejer af den nye billedstak. create_billed($billednavn, $beskrivelse, $link, $stack) Denne funktion bruges sammen med fileprocess.php til at uploade en fil til serveren. Denne funktion sørger for at billedet bliver oprettet korrekt i databasen. user_stacks($kundenummer, $relation) Denne funktion returnerer en brugers billedstakke med en given relation. get_stackinfo($billedstak) Denne funktion returnerer Billedstaknavn, Beskrivelse og dato for en given billedstak. fileprocess.php Fileprocess.php er den fil der bliver kaldt, når en fil skal uploades til serveren. Den indeholder en masse kontrol checks, som en fil skal igennem inden den bliver uploadet til serveren. Bl.a. er det her jeg kontrollerer om den fil, der bliver uploadet har en tilladt filtype. Dette sker ved hjælp af følgende kode: $valid = array (".jpg",".gif",".png",".bmp"); $type = strtolower(strstr($filename, '.')); if (!in_array($type, $valid)) { $uploadprogress = "3"; //invalid file type } Herved sikre vi os, at der kun bliver uploadet filer af godkendte formater til vores webserver. Jeg har implementeret fejlhåndtering i upload.php som denne funktion returnerer til, ved hjælp af følgende: header("location: /PHP/upload.php?stack=$stackid&file=$uploadprogress"); hvor $file er den variable der indeholder den returnerede kode og $uploadprogress er fejlkoden. Det bør dog bemærkes at $uploadprogress = 1 er tegn på en succesfuld upload af filen. Side 34 af 48

35 index.php Dette er den første side en bruger møder. Den indeholder en loginboks og et link til en side, hvor personen kan oprette sig som bruger. Denne side er beregnet til, i en udvidelse, at give en kort introduktion til ideen bag systemet. Samt forklare funktionaliteten af systemet. Med andre ord være et blikfang for en person, som er en potentiel bruger. Selve index.php benytter sig af funktioner fra dblogin.php, til at håndtere login processen. For nærmere forklaring se afsnittet login under funktionalitet. main.php Dette er hovedsiden i systemet, når en bruger er logget ind. Den fungerer som oversigt for hele systemet. Alle links til andre sider er inkluderet i menuen til venstre (leftnav). Her køres brugerkontrol på hvert link inden brugeren sendes videre til den ønskede side. Dette forgår ved hjælp af et pathid, et eksempel herpå kan ses nedenfor: elseif($pathid == 3) //Picturemanagement { if($_cookie[user] == md5($login_data[username])&& md5($_cookie[pass]) == $login_data[password]) { header("location: PHP/management.php"); } else { header("location: /main.php?pathid=0"); } } Hvis username og password ikke stemmer overens, vil brugeren blive sendt tilbage til main med pathid=0. Dette vil logge ham ud af systemet. Derved sikrer jeg, at vores bruger hele tiden er den, som han udgiver sig for at være. management.php Dette er den endelige frontend løsning, til hele billed management delen af mit system. Det er herfra en bruger kan slette, dele og redigere i sine billeder og delinger. Den benytter sig af mange funktions kald til at håndtere visningen af de enkelte mapper. Men alle hoved funktionerne vil være Side 35 af 48

36 at finde i dbmanagement.php. Da der sker mange ting på denne side, vil den switche på en række variabler, alt efter hvilken funktionalitet brugeren ønsker at anvende. Der er ikke i denne prototype implementeret fejlhåndtering af eventuelle fejl på denne side. Den endelige side er kommet til at se således ud: pictureedit.php pictureedit.php, fungerer som frontend del for en bruger, der ønsker at redigere data til et givent billede. Den indeholder en funktion, der viser det billede man skal til at redigere, og en form hvor man kan ændre navn og beskrivelse. Er dette allerede indtastet, vil disse informationer også være at finde i formen. Formen kalder dbpictureedit.php, som tager sig af selve updateringen, når der bliver Side 36 af 48

37 trykket på update. Der er implementeret fejlhåndtering, af det returnerede svar fra dbpictureedit.php. Den endelige implementering af denne er kommet til at se ud på følgende måde: register.php Denne side indeholder formen, som en person skal benytte, hvis han eller hun ønsker at blive oprettet en bruger i systemet. Den indeholder fejl beskeder, som den vil bringe sammen med en ny register form, f.eks. en bruger har indtastet data som ikke er blevet valideret korrekt. Dette kunne f.eks. være bogstaver i postnummeret, som vil medføre at bruger er nødt til at prøve igen. Side 37 af 48

38 upload.php Indeholder den grafiske brugerflade til upload af billeder. Den består af to dele, som switcher på en if sætning som ser ud som følgende: if($stackid == "0") { } else { } Hvad denne if sætning gør, er at switch på bruger har valgt en mappe eller ej. Har brugeren ikke valgt en mappe (dette er tilfældet når han trykker på linket upload ude i menuen til venstre) vil han blive præsenteret for alle de mapper han har skriverettigheder til, samt en form til at oprette en ny mappe. Når bruger klikker på en mappe, altså vælger hvilken mappe han vil uploade et billede til, vil han blive sendt ned i den anden del af if sætningen. Denne del vil nu vise ham den valgte mappe og indhold samt en form til at vælge et fil upload, og en form der sætter ham i stand til at indtaste et nyt navn til billedet samt en beskrivelse. index_css.css Dette er den CSS fil som hele designet bygger på, den indeholder konfigurationen til alle de <div> s som jeg benytter mig af gennem projektet. For mere forklaring se under design i afsnittet user layer. Database Som tidligere beskrevet er databasen normaliseret til 3NF, nedenfor er de sql sætninger som er blevet brugt at lave hver enkelt tabel. Disse kan blive brugt til at genskabe databasen, men de viser også hvilke værdier de enkelte felter kan indeholde. billede CREATE TABLE `billede` ( `Billedid` int(12) NOT NULL auto_increment, `Billednavn` varchar(50) default NULL, `Beskrivelse` varchar(400) default NULL, `Link` varchar(100) NOT NULL, Side 38 af 48

39 PRIMARY KEY (`Billedid`), UNIQUE KEY `Billed` (`Billedid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Billedstak CREATE TABLE `billedstak` ( `Billedstak` int(11) NOT NULL auto_increment, `Billedstaknavn` varchar(100) NOT NULL, `Beskrivelse` varchar(400) default NULL, `Dato` varchar(8) default NULL, PRIMARY KEY (`Billedstak`), UNIQUE KEY `Billedstak` (`Billedstak`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Kundeoplysninger. CREATE TABLE `kundeoplysninger` ( `kundenummer` int(11) NOT NULL auto_increment, `Fornavn` varchar(32) default NULL, `Efternavn` varchar(32) NOT NULL, `Addresse` varchar(100) NOT NULL, `Postnummer` int(4) NOT NULL, `Bynavn` varchar(32) NOT NULL, `Telefonnummer` varchar(15) NOT NULL, ` ` varchar(100) NOT NULL, PRIMARY KEY (`kundenummer`), UNIQUE KEY `kundenummer` (`kundenummer`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; kundetilbillede. CREATE TABLE `kundetilbilled` ( `ID` int(11) NOT NULL auto_increment, `Kundenummer` int(11) NOT NULL, `Billedstak` int(11) NOT NULL, `Relation` int(1) NOT NULL default '1', PRIMARY KEY (`ID`), Side 39 af 48

40 UNIQUE KEY `ID` (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Loginfo CREATE TABLE `loginfo` ( `Log_id` int(11) NOT NULL auto_increment, `Kundenummer` int(11) NOT NULL, `Username` varchar(32) NOT NULL, `Password` varchar(32) NOT NULL, `Userlevel` int(1) NOT NULL default '0', PRIMARY KEY (`Log_id`), UNIQUE KEY `Kundenummer` (`Kundenummer`), UNIQUE KEY `Username` (`Username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Staktilbillede CREATE TABLE `staktilbillede` ( `Stakid` int(11) NOT NULL auto_increment, `Billedstak` int(11) NOT NULL, `Billedid` int(11) NOT NULL, PRIMARY KEY (`Stakid`), UNIQUE KEY `stakid` (`Stakid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Side 40 af 48

41 Test I denne del af rapporten vil jeg prøve at teste mit system Jeg vil prøve at finde de fejl og mangler jeg har i mit system, så de kan blive vurderet. Test af register: Kontrol af brugerinput i registerformen. I denne test er jeg nødt til at se bort fra feltet. Grunden til dette er, at jeg ikke er i stand til at gemme en adresse i databasen. Derfor vil jeg få en fejl hvis jeg forsøger på dette. Derfor er testen ikke rettet mod dette felt. Jeg tester ved at indtaste ikke forventet input i formen for at se om jeg kan fremprovokere en fejl, der ikke er taget højde for i fejlbehandlingen. Dette har jeg dog ikke været i stand til, da alle variabler bliver kontrolleret ved hjælp af mine tidligere opstillede regular expressions. Test af login og cookie: Den første test af login jeg har valgt at foretage, er at tjekke for en mulighed for sql injection. Dette gør jeg ved at indsætte følgende udsagn i henholdsvis user og pass, som er post variablerne fra min login form. 'or1=1-- "or1=1-- or1=1-- 'or'a'='a "or"a"="a ') or ('a'='a Ideen bag er at teste om jeg kan få en sql kommando til at returnere et sandt udsagn, hvorved man kan være heldig at blive lukket ind i systemet. Det kunne dog ikke lade sig gøre. Grunden til dette er at user bliver checket i validate_user inden sql sætningen bliver udført. Password derimod bliver krypteret inden det bliver checket så derfor vil sql injection slet ikke virke i dette felt heller. Til at teste cookien, og dermed kontrol funktionerne til at sikre at en bruger ikke ændrer oplysninger i systemet har jeg prøvet at ændre først kundenummer, hvilket resulterede i, at jeg blev logget ud af Side 41 af 48

42 systemet. Efterfølgende prøvede jeg at ændre mit userlevel. Dette ændrede ikke noget og jeg kunne fortsætte min færden gennem systemet. Jeg kunne dog stadig ikke se linket til administrator menuen. Jeg prøvede så at indtaste linket direkte til administrator menuen, hvilket gjorde at jeg blev logget ud af systemet. Test af billedvisning: Til at teste billedvisningen vil jeg prøve at uploade et stort billede og se hvordan billedvisningen reagerer. Dette medfører følgende resultat: Som vi kan se bliver siden forskubbet. Dette er ikke meningen og bør derfor ændres i en udvidelse. Da billedvisningssiden bruger stack som variable (anført nedenfor) kan det være interessant at se, hvad der sker, hvis jeg ændrer tallet til et andet stack nummer, for at se om jeg kan få adgang til en anden stack på den måde. Side 42 af 48

43 Ved at benytte mig af sql injection sker der ikke noget, da funktionen ikke bliver eksekveret, fordi stacknummeret ikke kommer igennem validerings fase. Efterfølgende prøver jeg at ændre stack nummer til et andet stack nummer, som brugeren har adgang til. Dette sender ham direkte videre til den pågældende stack. Dette er ok og det vil jeg ikke betragte som en fejl. Da jeg efterfølgende prøver at indtaste et stack nummer, som brugeren ikke har tilknytning til, bliver jeg logget ud af systemet. Grunden er at jeg kører et tjek på om brugeren har tilknytning til stacken. Har han ikke det vil han blive logget ud af systemet. Denne side benytter sig af en variabel mere, nemlig page: Der kører ikke validering på denne variable som systemet er nu. Dette åbner mulighed for sql injection. Jeg har dog ikke været i stand til at bedømme det mulige skadeomfang, men vurderer det til at være af mindre risiko. Der bør dog i en senere udvidelse køres et validerings check på denne variabel. Test af billede management: Ved deling, sletning og unshare af et billede testes der også. Funktionerne benytter sig af en hidden post variable. Denne Post variabel (stack), vil ikke kunne blive benyttet til et eventuelt sql injection angreb, da der køres validering af selve variablen. Det vil heller ikke være muligt direkte at tiltvinge sig adgang til andre mapper da der kører kontrol af tilhørsforholdet på den givne stack variabel. Det bør bemærkes at dette tilhørsforhold ikke kontrollerer selve ejerforholdet. Derved kan en bruger med et tilhørsforhold til en stack kunne ændre, slette eller på anden vis misbruge dette. Derfor bør der bestemt blive implementeret en løsning på dette i en fremtidig udvidelse af systemet. Ydermere bør det bemærkes, at denne stack variabel kun kan indeholde et stackid ad gangen. Det er derfor ikke muligt at dele, slette eller unshare mere end en mappe ad gangen. Forsøger man på dette vil det kun være den sidst valgte mappe, der vil blive påvirket. Endelig kan bemærkes, at deler man den samme mappe til en person flere gange, vil alle disse delinger blive fjernet hvis man unshare en af dem. Side 43 af 48

44 Test af billede upload: Den første funktion jeg støder på, i forbindelse med testen af upload delen af mit system, er opret en ny mappe. Denne funktion kører validering på både mappe navn (stak navn) og på beskrivelse. Den vil dog ikke oprette en mappe uden af begge dele er indtastede. Hvis dette ikke er tilfældet kommer den med en fejlmeddelelse: Failed to create new folder Når man har indtastet begge dele og trykker på opret, vil mappen blive oprettet. Den vil dog ikke blive vist, før man trykker på upload linket igen, da den ikke opdaterer selve siden før. Dette kan man forstille sig opdateret i en fremtidig version. Det udgør dog ikke en potentiel sikkerhedsrisiko og er derfor af mindre vigtighed. Efter at have valgt hvilken mappe, eller stack om man vil, som jeg ønsker at uploade et billede til, kommer jeg videre til den egentlige upload del. Selve valget af mappe kører igen på en hidden post variabel, der indeholder den valgte stack, som jeg kører kontrol af tilhørsforhold og validering på, inden den bliver benyttet. Jeg kan nu browse efter en fil i en standard browser, men denne har dog flere valg muligheder end den burde have og viser kun nogle af de formater, som mit system tillader. Nedenstående billede illustrerer dette: Selve min upload procedure tillader filer af følgende typer at blive uploadet: $valid = array (".jpg",".gif",".png",".bmp"); Dette inkluderer ikke html filer, men tillader derimod.png og.bmp filer. Jeg kan forestille mig at dette bliver ændret i senere udvidelse. Jeg har ikke yderligere været i stand til at finde flere fejl ved upload delen, da der kører validering på mine variabler og indtastede værdier. Side 44 af 48

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

Læs mere

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt Foto-Applikation Dokumentation Et Kod-i-Ferien projekt 1 Indholdsfortegnelse Systemets generelle opsætning... 3 Systemets elementer... 4 iphone applikation... 4 PHP-script... 4 Wordpress-plugin... 4 Website...

Læs mere

Procesbeskrivelse - Webprogrammering

Procesbeskrivelse - Webprogrammering Procesbeskrivelse - Webprogrammering Indholdsfortegnelse Forudsætninger... 1 Konceptet... 2 Hjemmesiden... 2 Server-side... 3 Filstrukturen... 3 Databasehåndtering og serverforbindelse... 4 Client-side...

Læs mere

PHP kode til hjemmeside menu.

PHP kode til hjemmeside menu. PHP kode til hjemmeside menu. Home Hovedmenu 1 Hovedmenu 2 Hovedmenu 3 Hovedmenu 4 Undermenu 1 Breadcrumb Her vises indholdet af den valgte side Undermenu 2 Undermenu 3 Undermenu 4 Evt. en mulighed for

Læs mere

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre Denne guide er oprindeligt udgivet på Eksperten.dk Log ind med PHP Med denne guide lærer du hvordan du kan logge ind på din hjemmeside med PHP. Guiden viser dig hvordan koderne skal opstilles, og hvad

Læs mere

A11: Last Year s Exam

A11: Last Year s Exam A11: Last Year s Exam Agenda Design of Site map and Web- structure (3) Design of data model (1) Design of database transactions (2) Construction of HTML and PHP scripts (3) Exercise 3: Design of Site map

Læs mere

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

Læs mere

2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING

2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING 2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING Baggrund Udgangspunktet er projekt 2, dvs. en blog om cupcakes, hvor målgruppe, afsender og modtager allerede er defineret. Du bliver nu bedt om at udvikle et

Læs mere

Eksamen, DSDS, forår 2009

Eksamen, DSDS, forår 2009 Eksamen, DSDS, forår 2009 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 3. juni 2009 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.

Læs mere

Brug af gallerier på fotorammenviborg.dk

Brug af gallerier på fotorammenviborg.dk Brug af gallerier på fotorammenviborg.dk En lille vejledning fra Margaret Skovsen Åbn din browser*) og tast navnet på dit galleri. Det vil typisk være af typen xxx.fotorammenviborg.dk eller xxxy.fotorammenviborg.dk,

Læs mere

Interaktionsudvikling

Interaktionsudvikling Projektopgave 3: Interaktionsudvikling CPH business, klasse: MulA2013 Projektansvarlige undervisere Thomas Hartmann MereteGeldermann lützen: Projekt produkt url: www.amalieardahl.dk/projekt3/index.html

Læs mere

BRUGER KURSUS RAMBØLL HJEMMESIDE

BRUGER KURSUS RAMBØLL HJEMMESIDE Til Forsyningsvirksomheder i Danmark Dokumenttype Brugervejledning Rambøll Hjemmeside Full Responsive Dato Oktober 2017 BRUGER KURSUS RAMBØLL HJEMMESIDE BRUGER KURSUS RAMBØLL HJEMMESIDE Revision 01 Dato

Læs mere

NT PDC Udarbejdet af Kenneth Dalbjerg

NT PDC Udarbejdet af Kenneth Dalbjerg NT PDC Udarbejdet af Kenneth Dalbjerg Titelblad Denne rapport er udarbejdet af Kenneth Dalbjerg, med det formål at lære noget omkring, NT PDC Server. Side 2 af 13 Indholdsfortegnelse Forside Titelblad

Læs mere

TRIN FOR TRIN GUIDE VELUX Tilbudsberegner

TRIN FOR TRIN GUIDE VELUX Tilbudsberegner TRIN FOR TRIN GUIDE VELUX Tilbudsberegner Hvad er VELUX Tilbudsberegner Anmod om adgang Opret password Opret din brugerprofil 2 veje til et kundetilbud Dine tilbud 1 VELUX TILBUDSBEREGNER HVAD ER VELUX

Læs mere

Guide til Umbraco CMS

Guide til Umbraco CMS web Guide til Umbraco CMS Indhold Indledning 3 Kompatible browsere 3 Log ind i Umbraco 4 Content-delen 5 Indholdstræet 5 Tilføjelse af en side/sektion 7 Sortering af indhold 12 Galleri 14 Mediebibliotek

Læs mere

IIS 8.0 & 8.5 & 10.0 SSL Administration

IIS 8.0 & 8.5 & 10.0 SSL Administration IIS 8.0 & 8.5 & 10.0 SSL Administration Indholdsfortegnelse Introduktion... 3 Generering af CSR... 4 Installation af certifikat bestilt via CSR... 8 Installation af mellemudsteder certifikat... 8 Installation

Læs mere

Digital skriftlig aflevering med Lectio Censormodul Stedprøver installationsvejledning

Digital skriftlig aflevering med Lectio Censormodul Stedprøver installationsvejledning Digital skriftlig aflevering med Lectio Censormodul Stedprøver installationsvejledning 1. Lokalt installeret afleveringsprogram til stedprøver... 2 2. Systemkrav... 3 3. Netværksopsætning... 4 4. Installation

Læs mere

Loginsystem (med MySQL)

Loginsystem (med MySQL) Denne guide er oprindeligt udgivet på Eksperten.dk Loginsystem (med MySQL) Dette er en guide til, hvordan man kan lave et loginsystem med php og muligvis også med sessioner og MySQL Skrevet den 02. Feb

Læs mere

STOFA VEJLEDNING ONLINEDISK INSTALLATION

STOFA VEJLEDNING ONLINEDISK INSTALLATION STOFA VEJLEDNING ONLINEDISK INSTALLATION I denne vejledning gennemgås installation af Stofa OnlineDisk samt opsætning, brugerflade og OnlineDisk Webportalen. Trin 1 Information om Stofa OnlineDisk Stofa

Læs mere

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML SQL kap 6-7 + 17-20 DDL og DML 1 De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en

Læs mere

Brugermanual PoP3 og Outlook Office 2003 Webmail www.321mail.dk. Udarbejdet af IT-afdelingen 2005

Brugermanual PoP3 og Outlook Office 2003 Webmail www.321mail.dk. Udarbejdet af IT-afdelingen 2005 Brugermanual PoP3 og Outlook Office 2003 Webmail www.321mail.dk Udarbejdet af IT-afdelingen 2005 Indholdsfortegnelse 1. INDLEDNING... 4 2. OUTLOOK 2003... 4 3. BRUGERVEJLEDNING I BRUGEN AF WEB MAIL...

Læs mere

ViKoSys. Virksomheds Kontakt System

ViKoSys. Virksomheds Kontakt System ViKoSys Virksomheds Kontakt System 1 Hvad er det? Virksomheds Kontakt System er udviklet som et hjælpeværkstøj til iværksættere og andre virksomheder som gerne vil have et værktøj hvor de kan finde og

Læs mere

UPLOAD. Af Database og Website til Skolens Server

UPLOAD. Af Database og Website til Skolens Server UPLOAD Af Database og Website til Skolens Server INDHOLDSFORTEGNELSE Fra projekt til server... 3 Overførsel af SQL Database... 3 Eksekvering af T SQL Script... 8 Modificering af Visual Studio Projekt...

Læs mere

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP Snippets. De små korte. Skrevet af Daniel Pedersen PHP Snippets De små korte Skrevet af Daniel Pedersen Indhold PHP Snippets De små korte er en samling af små og praktiske kode eksempler med kort forklaring, som med formål at kunne benyttes til opsalgsværk

Læs mere

Dokumentering af umbraco artikeleksport:

Dokumentering af umbraco artikeleksport: Dokumentering af umbraco artikeleksport: Lav en artikel side 2-3. Installationsguide side 3-5. Opsættelse af databasen og web.config side 5-8. Umbraco: templates side 8. Umbraco: borger.dk tab side 8.

Læs mere

Brugeradministrationsvejledning til SMS Web

Brugeradministrationsvejledning til SMS Web Brugeradministrationsvejledning til SMS Web Administration Denne side vil være forskellig afhængig af om man er administrator eller bruger. Administrator får oversigt over alle brugerne samt konfiguration,

Læs mere

Redaktørmanual TYPO3 Version 6.2

Redaktørmanual TYPO3 Version 6.2 Redaktørmanual TYPO3 Version 6.2 www.t3cms.dk TYPO3 Manual Version 6.2 Side 1 af 20 T3CMS Tlf: 70 25 00 22 Indholdsfortegnelse Generel info om TYPO3 3 Rediger din side 4-6 Indsættelse af links 7 Indsæt

Læs mere

Du kan også bruge Dropbox sammen med din Iphone, Android telefon eller anden smartphone.

Du kan også bruge Dropbox sammen med din Iphone, Android telefon eller anden smartphone. Dropbox Introduktion til Dropbox Dropbox er en online tjeneste, hvor man ganske gratis kan få noget lagerplads til sine dokumenter, billeder og meget mere. Der er mange muligheder med Dropbox, som bliver

Læs mere

Nets - Medarbejder Signatur

Nets - Medarbejder Signatur Nets - Medarbejder Signatur Nets Direkte Kommunikation Nøgle Bestilling Version: 2.1, Oktober 2013 Continia Software a/s Hjulmagervej 55 DK-9000 Aalborg Denmark Tel. +45 82 30 50 00 Support mail: cm@continia.dk

Læs mere

Sådan installeres og teste WordPress på en lokal server

Sådan installeres og teste WordPress på en lokal server Sådan installeres og teste WordPress på en lokal server Det gratis WordPress blog værktøj er vokset gennem årene til et fuldgyldigt CMS-system content management system). WordPress har forenklet processen

Læs mere

Vejledning til Teknisk opsætning

Vejledning til Teknisk opsætning Vejledning til Teknisk opsætning v. 1.0 Adm4you, 2010. Indhold Kort om denne vejledning... 3 Generelt om easyourtime... 3 Installation af databasen... 3 Sikkerhed og rettigheder... 4 SQL Login... 4 Rettigheder

Læs mere

Brugervejledning til databrowseren

Brugervejledning til databrowseren Brugervejledning til databrowseren Indholdsfortegnelse Indledning...2 Hvordan tilgås browseren og api et...2 Databrowseren...2 Søgning...2 Visning...4 Features i listevisningen...4 Detaljeret visning...5

Læs mere

Umbraco installationsvejledning

Umbraco installationsvejledning på et ScanNet ASP Webhotel Indledning Beskrivelse Denne vejledning vil indeholde installation af CMS systemet Umbraco på et ASP Webhotel. Det dansk grundlagt Content Management System (CMS) Umbraco er

Læs mere

My booking. Generelt. Forsiden. Version 9.0

My booking. Generelt. Forsiden. Version 9.0 My booking Version 9.0 System til at lave online bookinger, med mulighed for opdeling i grupper, forskellige booking typer, ændre layout indstillinger, status styring, sprogvalg samt en del mere, detaljer

Læs mere

Vejledning til registrering som bruger til EudraCT results

Vejledning til registrering som bruger til EudraCT results Vejledning til registrering som bruger til EudraCT results 1 Registrering som ny bruger For at indtaste resultater, skal man registreres som bruger i EudraCT databasen: https://eudract.ema.europa.eu/results-web/

Læs mere

Keepit Classic. Keepit Classic Relaterede Problemer

Keepit Classic. Keepit Classic Relaterede Problemer Keepit Classic Relaterede Problemer Ændre email-adresse til login Er du Keepit erhverv kunde (PRO / Server konto) kan du selv ændre din e-mail adresse i kontrolpanelet Gå i kontrolpanel på cp.keepit.com/login

Læs mere

vorbasse.dk Redaktørmanual Kentaur

vorbasse.dk Redaktørmanual Kentaur Redaktørmanual Kentaur Indholdsfortegnelse Kapitel 1 - TYPO3 Brugerfladen 3 Log ind 3 Backend 4 Frontend 5 Hvor skal jeg klikke? 5 Gem, gem og vis, gem og luk 6 Kapitel 2 - Sider & menuer 7 Sammenhæng

Læs mere

Tlf. +45 7027 1699 Fax + 45 7027 1899

Tlf. +45 7027 1699 Fax + 45 7027 1899 Firmaordninger I firmaoversigten kan du holde styr på dit kundekartotek samt disses bookinger. Der kan desuden oprettes andre firmaer end dit eget. Herved kan der udbydes særlige ydelser på med egne arbejdstider.

Læs mere

Reeksamen, DSDS, forår 2008

Reeksamen, DSDS, forår 2008 Reeksamen, DSDS, forår 2008 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 22. august 2008 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.

Læs mere

Serversideprogrammering, CMS og eshop. Dag 1: Introduktion og serverside programmering Niels Østergaard

Serversideprogrammering, CMS og eshop. Dag 1: Introduktion og serverside programmering Niels Østergaard Serversideprogrammering, CMS og eshop Dag 1: Introduktion og serverside programmering Niels Østergaard Dagens program Introduktion til forløbet Begrebet serverside Introduktion til PHP-programmering Tilmelding

Læs mere

Vejledning til brug af Y s Men s klubintranet administrator guide

Vejledning til brug af Y s Men s klubintranet administrator guide Vejledning til brug af Y s Men s klubintranet administrator guide Systemet tilbyder klubberne i Y s Men Danmark at have et sted hvor de kan dele filer f.eks. Word, pdf, billeder mv. mellem de medlemmer

Læs mere

Introduktion til OPC Access

Introduktion til OPC Access Introduktion til OPC Access OPC Access anvendes til at kommunikere med jeres produktionsudstyr via OPC. OPC Access kombinerer en SQL Server med OPC, således at jeres produktionsudstyr kobles sammen med

Læs mere

Ruko SmartAir. Updater installation

Ruko SmartAir. Updater installation Ruko SmartAir Updater installation Introduktion. Updateren er en speciel enhed som giver os mulighed for at tilføje, læse og skrive funktioner i en offline installation. Med læse og skrive funktionen kan

Læs mere

Det Naturvidenskabelige Fakultet. Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske

Det Naturvidenskabelige Fakultet. Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske Det Naturvidenskabelige Fakultet Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske Indholdsfortegnelse Introduktion til Blackboard Content System...3 Øvelse 01 individuel:

Læs mere

Tagwall med Php & MySQL

Tagwall med Php & MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Tagwall med Php & MySQL Her laver vi en tagwall i Php & MySQL... jeg forklarer dog ikke så meget, men jeg håber du kan få det til at blive til en tagwall

Læs mere

Manual for Synkron hjemmesider

Manual for Synkron hjemmesider Manual for Synkron hjemmesider Denne manual tilhører: Brugernavn: (username) Adgangskode: (password) 1 Start med sitetræet: Sitetræet er centralt. Det er her, dit website er. Det er her, du bygger dine

Læs mere

Gem dine dokumenter i BON s Content Management System (CMS)

Gem dine dokumenter i BON s Content Management System (CMS) 24. august 2007 Gem dine dokumenter i BON s Content Management System (CMS) INDHOLDSFORTEGNELSE 1. Indledning... 2 2. Se indholdet i dit Content Management System... 3 3. Tilgå dokumenterne i My Content

Læs mere

I denne manual kan du finde en hurtig introduktion til hvordan du:

I denne manual kan du finde en hurtig introduktion til hvordan du: VORES NORDSJÆLLAND HURTIGT I GANG MANUAL 01: Bruger HVAD INDEHOLDER DENNE MANUAL? I denne manual kan du finde en hurtig introduktion til hvordan du: 1. Finder Vores Nordsjælland hjemmesiden 2. Opretter

Læs mere

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online. Denne guide er oprindeligt udgivet på Eksperten.dk Hvem er online? Online script, som tager højde for at der kan være flere personer, som har den samme IP-adresse. Scriptet viser hvor lang tid brugeren

Læs mere

Mini brugermanual CMD 5.1

Mini brugermanual CMD 5.1 Mini brugermanual CMD 5.1 Kom i gang For at tilgå CMD skal du åbne en web browser og indtaste URL en på dit CMD website i adressefeltet, hvorefter dialogboksen til log in vises. 1. Indtast dit brugernavn

Læs mere

En blog med dansk brugerflade. Opret en Smartlog konto Gå til http://www.smartlog.dk/ Opret en konto ved at skrive din e-mailadresse

En blog med dansk brugerflade. Opret en Smartlog konto Gå til http://www.smartlog.dk/ Opret en konto ved at skrive din e-mailadresse Blogs Om blogs http://www.it-borger.dk/den-nye-it-verden/internet/blogs Om at oprette blogs http://www.it-borger.dk/laer-om-it/internet/nar-du-vil-pa-nettet/blogs/sadan-laver-du-en-blog Råd når du laver

Læs mere

Google Apps. Lær at oprette, organisere, dele og slette dokumenter. Udarbejdet af PLC, version 2013!!!!!!! Side 1 af 9

Google Apps. Lær at oprette, organisere, dele og slette dokumenter. Udarbejdet af PLC, version 2013!!!!!!! Side 1 af 9 Lær at oprette, organisere, dele og slette dokumenter. Udarbejdet af PLC, version 2013!!!!!!! Side 1 af 9 Arbejde i faner Google Apps arbejder i faner, derfor er det vigtigt, du er bekendt med det. Mappen

Læs mere

10.0 Velkommen til manualen for bruger administration Introduktion til manualen Menuen Startside

10.0 Velkommen til manualen for bruger administration Introduktion til manualen Menuen Startside 10.0 Velkommen til manualen for bruger administration 1 10.1 Introduktion til manualen 1 10.2 Startside 1 10.3 Menuen Startside 2 10.3.1 Din brugerprofil 2 10.3.1.1 Ret password 3 10.4 Rediger kanaler

Læs mere

FC-intranet: FC-intranet er et fælles mail- og konferencesystem, hvor lærere og elever kan kommunikere.

FC-intranet: FC-intranet er et fælles mail- og konferencesystem, hvor lærere og elever kan kommunikere. IT-intro 9. august 2011 14:56 IT-introduktion på Risskov Gymnasium FC-intranet: FC-intranet er et fælles mail- og konferencesystem, hvor lærere og elever kan kommunikere. Før end man kan logge sig ind

Læs mere

Denne rapport er skrevet af:

Denne rapport er skrevet af: Rapport til Kajakklubben Rapport til Kajakklubben Generelt: Frontend: Backend Admin: Backend instruktør sign up: Backend medlem sign up: Database: Oprettelse af database og SQL sætning: Konklusion: Bilag:

Læs mere

Billeder på hjemmeside

Billeder på hjemmeside Billeder på hjemmeside Indholdsfortegnelse Emne 1. Billedredigering (Microsoft Picture Manager) Side 3 a. Komprimer billeder b. Beskæring af billeder 3 9 2. Billeder og tekst ved hjælp af en skabelon (Template

Læs mere

Carry it Easy Brugermanual

Carry it Easy Brugermanual Carry it Easy Brugermanual Brugermanual Version 2.0 2004-2006 CoSoSys SRL Carry it Easy Brugermanual Indholdsfortegnelse Indholdsfortegnelse...I 1. Introduktion...1 2. Systemkrav...2 3. Installation...2

Læs mere

GUIDE TIL CLOUD DRIVE

GUIDE TIL CLOUD DRIVE GUIDE TIL CLOUD DRIVE Dette er en guide du kan anvende til nemt at komme effektivt i gang med at anvende Cloud Drive Indholdsfortegnelse 1. Tilgængelige Cloud Drive klienter 2. Guide til Windows klienten

Læs mere

BRUGERVEJLEDNING ADMINISTRATIONSPORTAL FOR FORHANDLERE

BRUGERVEJLEDNING ADMINISTRATIONSPORTAL FOR FORHANDLERE BRUGERVEJLEDNING ADMINISTRATIONSPORTAL FOR FORHANDLERE Dato: 7. januar 2015 Version: 1.0 Indholdsfortegnelse 1. Indledning...3 A. Administrationsportal...3 2. Kom godt i gang...4 A. Minimumskrav...4 B.

Læs mere

Guide. Administration af FDF.dk/Nyborg. 1. Udgave 2008. Ide og layout Christoffer S. Rasmussen

Guide. Administration af FDF.dk/Nyborg. 1. Udgave 2008. Ide og layout Christoffer S. Rasmussen Guide Administration af FDF.dk/Nyborg 1. Udgave 2008 Ide og layout Christoffer S. Rasmussen FDF.Dk/NyboRG Den nye hjemmeside for FDF Nyborg er baseret på et bloksystem. Det vil sige at det er super nemt

Læs mere

Introduktion til Indholdsredigering

Introduktion til Indholdsredigering Sitecore Foundry 4.0 Introduktion til Indholdsredigering 18. oktober 2013 - Version 1.2 Pentia A/S Store Kongensgade 66, Baghuset 1264 København K Telefon: 7023 3330 E-mail: info@foreningssite.dk Indholdsfortegnelse

Læs mere

Brugermanual. Outlook Web Access for Exchange Server 2003 (OWA 2003) Udarbejdet af IT-afdelingen 2006

Brugermanual. Outlook Web Access for Exchange Server 2003 (OWA 2003) Udarbejdet af IT-afdelingen 2006 Brugermanual Outlook Web Access for Exchange Server 2003 (OWA 2003) Udarbejdet af IT-afdelingen 2006 Indholdsfortegnelse INDLEDNING... 3 HVORDAN DU FÅR ADGANG TIL DIN EMAIL... 3 OWA 2003 BRUGERGRÆNSEFLADE...

Læs mere

Smart-ebizz Manual til Bookinsystem Indholdsfortegnelse Kom hurtigt i gang med dit booking system:... 3 Overblikket over dit bookingsystem... 4 Hovedside... 4 Kunder... 4 Opret ny Kunde... 4 Vagtplaner...

Læs mere

Begrynder til at lave log ind system

Begrynder til at lave log ind system Denne guide er oprindeligt udgivet på Eksperten.dk Begrynder til at lave log ind system Hej Vil jeg gerne lave en lille programmering forklare til hvordan du laver din helt egen lille start på at log ind

Læs mere

Manual til administration af online booking

Manual til administration af online booking 2016 Manual til administration af online booking ShopBook Online Med forklaring og eksempler på hvordan man konfigurerer og overvåger online booking. www.obels.dk 1 Introduktion... 4 1.1 Formål... 4 1.2

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

Installation af WeroShop 2.4 S

Installation af WeroShop 2.4 S 2012 Installation af WeroShop 2.4 S Tommy Westerdahl Christensen Wero Electronics 23-02-2012 Indholdsfortegnelse INDLEDNING... 2 INSTALLATION... 3 GENEREL OPSÆTNING... 8 MOMS OPSÆTNING... 10 BETALINGSFORMER...

Læs mere

SIDEN PÅ WORDPRESS.COM

SIDEN PÅ WORDPRESS.COM WordPress WordPress er et fantastisk program til blog og til hjemmesider, hvor du gerne vil kunne rette via din browser. WordPress er meget udbredt og det er derfor nemt at finde fora, templates og hjælp

Læs mere

Version 8.0. BullGuard. Backup

Version 8.0. BullGuard. Backup Version 8.0 BullGuard Backup 0GB 1 2 INSTALLATIONSVEJLEDNING WINDOWS VISTA, XP & 2000 (BULLGUARD 8.0) 1 Luk alle åbne programmer, bortset fra Windows. 2 3 Følg instrukserne på skærmen for at installere

Læs mere

GUIDE TIL OPRETTELSE AF SIDER OG INDHOLD I UMBRACO ONLINE BETJENING

GUIDE TIL OPRETTELSE AF SIDER OG INDHOLD I UMBRACO ONLINE BETJENING GUIDE TIL OPRETTELSE AF SIDER OG INDHOLD I UMBRACO ONLINE BETJENING DANSKE BEDEMÆND august 2014 v1.4 1 P a g e INDHOLDSFORTEGNELSE Adgang... 3 Overordnet om Umbraco... 4 Højreklik muligheder i oversigten...

Læs mere

Sådan redigerer du en hjemmeside i Umbraco

Sådan redigerer du en hjemmeside i Umbraco Brugermanual til din boligafdelings hjemmeside Sådan redigerer du en hjemmeside i Umbraco Indhold Introduktion... 2 Log på Umbraco og redigér din hjemmeside... 3 Opret ny side... 7 Gem side uden at udgive/publicere

Læs mere

Jysk Online Medie ApS - Vestergade 32, 8600 Silkeborg - Tlf.:

Jysk Online Medie ApS - Vestergade 32, 8600 Silkeborg - Tlf.: Brugervejledning til hjemmeside Kristian Kalajdzic Denne vejledning har til formål at hjælpe dig til at tilgå, vedligeholde og benytte din hjemmeside. Vejledningen henvender sig til hjemmesider bygget

Læs mere

Tips til siden Slægtstræ

Tips til siden Slægtstræ Tips til siden Slægtstræ Indholdsfortegnelse Indledning 1 Kom godt i gang 1 Kildecitater og links til online arkivalier: 5 Familier 9 Export, import og backup: 10 Folketællinger: 10 Om noter og rapporter

Læs mere

DB undervisning 01-01

DB undervisning 01-01 Databaser... 2 Tabeller... 2 Redundans... 3 Første regel... 4 Anden regel... 4 Tredje regel... 5 Relationer... 5 Opskrift... 6 SQL sætninger til at oprette tabeller... 7 SQL sætninger til at indsætte data...

Læs mere

DATABASE Projekt 1-3. semester

DATABASE Projekt 1-3. semester DATABASE Projekt 1-3. semester Gruppe 2- CLmul-a12e Projekt URL http://www.lucasperch.dk/projekter/database.pdf Gruppe 2 Lucas Perch-Nielsen cph-lp14@cphbusiness.dk http://lucasperch.dk/skole.php Niclas

Læs mere

Brugermanual. PoP3 og Outlook Express Webmail www.321mail.dk. Udarbejdet af IT-afdelingen 2005

Brugermanual. PoP3 og Outlook Express Webmail www.321mail.dk. Udarbejdet af IT-afdelingen 2005 Brugermanual PoP3 og Outlook Express Webmail www.321mail.dk Udarbejdet af IT-afdelingen 2005 Indholdsfortegnelse 1. ÆNDRING AF OUTLOOK EXPRESS KONTO... 4 2. OPRETTELSE AF OUTLOOK EXPRESS KONTO... 6 2.1

Læs mere

Ratingsystem i PHP og MySQL

Ratingsystem i PHP og MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Ratingsystem i PHP og MySQL Lær at lave et system til at vise rating/bedømmelse på artikler og nyheder. Skrevet den 03. Feb 2009 af virtual1ty I kategorien

Læs mere

Simon Elgaard Sørensen, 8. december 2010

Simon Elgaard Sørensen, 8. december 2010 Automat-guide Simon Elgaard Sørensen, 8. december 2010 Indhold Automat-guide... 1 1 Indledning... 3 2 Automat interfacet... 3 3 Det findes i Automat... 3 3.1 Hovedmenuen... 3 4 Brugerhåndtering... 3 4.1

Læs mere

MailMax / Web v4.1. Brugsvejledning til webmail. Copyright 2003 Gullestrup.net

MailMax / Web v4.1. Brugsvejledning til webmail. Copyright 2003 Gullestrup.net MailMax / Web v4.1 Copyright 2003 Gullestrup.net Log ind på webmailen Start med at gå ind på http://webmail.gullestrup.net i din browser. Indtast din Email-adresse samt Adgangskode, som hører til din konto.

Læs mere

IT-Brugerkursus. Modul 1 - Introduktion til skolens netværk og FC. Modul 1 - Introduktion til FC og Lectio. Printvenligt format. Indholdsfortegnelse

IT-Brugerkursus. Modul 1 - Introduktion til skolens netværk og FC. Modul 1 - Introduktion til FC og Lectio. Printvenligt format. Indholdsfortegnelse Modul 1 - Introduktion til FC og Lectio IT-Brugerkursus Modul 1 - Introduktion til skolens netværk og FC Printvenligt format Indholdsfortegnelse Formål og opbygning Opgave Vejledning til intranettet Åbne

Læs mere

Call Recorder Apresa Brugermanual

Call Recorder Apresa Brugermanual Call Recorder Apresa Brugermanual Version. 1.100.11 Vidicode Pleje og vedligeholdelse: CR Apresa må ikke blive våd. Hvis den bliver våd, tør den omgående af med en blød, ren klud. Væsker kan indeholde

Læs mere

Manual Version 2. til oprettelse af hjemmesider for landsbyer i Rebild kommune

Manual Version 2. til oprettelse af hjemmesider for landsbyer i Rebild kommune Manual Version 2 til oprettelse af hjemmesider for landsbyer i Rebild kommune Oversigt: Login Hjemmeside...... side 3 Login Administrationsmodul... side 5 Kategorier.. side 6 Opret/rediger første side...

Læs mere

BRUGERMANUAL FLEXSCREEN

BRUGERMANUAL FLEXSCREEN BRUGERMANUAL FLEXSCREEN INDHOLDSFORTEGNELSE Indledning...3 Login...3 Ændre password for en infoskærm...4 Ret tekst på siden...5 Indsæt et billede på siden...6 Opdel skærmen i kasser/bokse...8 Tilføj slide...10

Læs mere

Booking system. Instruktion til bookingsystem

Booking system. Instruktion til bookingsystem Booking system Instruktion til bookingsystem Her er beskrevet trin for trin, hvordan bookingsystemet skal betjenes. Systemet er opdelt i to dele en kundedel og en administrationsdel. 4-2-2015 1 Indledning

Læs mere

TK/TBL / 25.08.2014 v.0.1. DigiMatch. Elektronisk Kamprapport

TK/TBL / 25.08.2014 v.0.1. DigiMatch. Elektronisk Kamprapport TK/TBL / 25.08.2014 v.0.1 DigiMatch Elektronisk Kamprapport 1 Procedure før kampstart... 3 DigiMatch download... 3 Registerniveau... 7 Indstillinger... 9 Login... 9 Tilpas knapperne... 10 Kampregistrering...

Læs mere

Eksamen, DSDS, efterår 2007

Eksamen, DSDS, efterår 2007 Eksamen, DSDS, efterår 2007 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech og Martin Elsman IT Universitetet i København 7. januar 2008 Alle hjælpemidler er tilladte, dog ikke

Læs mere

Upload af billeder til hjemmesiden m.m.

Upload af billeder til hjemmesiden m.m. Upload af billeder til hjemmesiden m.m. Fremgangsmåde VVS-inst.dk Upload af billeder m.m., Side 1 Så går vi i gang Åben Firefox browseren Gå ind på denne adresse, for at komme til hjemmeside programmet.

Læs mere

FleeDa (DBK Fleetmap Database) Installationsvejledning til installation af VPN og FleeDa klient på egen PC (Juli 2017)

FleeDa (DBK Fleetmap Database) Installationsvejledning til installation af VPN og FleeDa klient på egen PC (Juli 2017) FleeDa (DBK Fleetmap Database) Installationsvejledning til installation af VPN og FleeDa klient på egen PC (Juli 2017) Page 1 of 12 Indhold 1 Adgang til FleeDa... 3 1.1 HW og SW forudsætninger... 3 1.2

Læs mere

Indhold. Vejledning til ShareFile. Sådan uploader du en fil til My Files & Folders. Sådan uploader du en fil til Shared Folders

Indhold. Vejledning til ShareFile. Sådan uploader du en fil til My Files & Folders. Sådan uploader du en fil til Shared Folders Indhold Sådan uploader du en fil til My Files & Folders Sådan uploader du en fil til Shared Folders Sådan giver du andre adgang til Shared Folders/My Files & Folders Sådan deler du en fil fra My Files

Læs mere

OpenTele datamonitoreringsplatform

OpenTele datamonitoreringsplatform OpenTele datamonitoreringsplatform Brugergrænsefladedokumentation 1. maj 2013 Indholdsfortegnelse Indholdsfortegnelse...2 Indledning...3 Brugergrænseflade for OpenTele-server...3 Administrationsfunktionalitet...3

Læs mere

Opret bruger på radikale.dk

Opret bruger på radikale.dk Opret bruger på radikale.dk Første gang du skal logge på det nye radikale.dk, skal du oprette en ny bruger - også selvom du havde en bruger og kunne logge ind på det gamle radikale.dk. Det er to forskellige

Læs mere

Uploade billeder eller andre filer ved hjælp af php og mysql

Uploade billeder eller andre filer ved hjælp af php og mysql Denne guide er oprindeligt udgivet på Eksperten.dk Uploade billeder eller andre filer ved hjælp af php og mysql Denne artikel viser hvordan man kan uploade et billede eller en anden fil, og tilknytte det

Læs mere

Langeskov IT Online Backup Guide

Langeskov IT Online Backup Guide Langeskov IT Online Backup Guide / version 24-08-2017 Kontakt oplysninger ved spørgsmål eller hjælp Langeskov IT / Jesper Hansen E-mail: info@langeskov-it.dk WWW: www.langeskov-it.dk/produkter/online-backup

Læs mere

Kom godt i gang med Hostcenter Danmarks Webadmin

Kom godt i gang med Hostcenter Danmarks Webadmin Kom godt i gang med Hostcenter Danmarks Webadmin Formålet med denne artikel er at give en hurtig overblik over funktionerne i Hostcenter Danmarks Webadmin. Webadmin er det værktøj der bruges til at styre

Læs mere

Mbridge tilmeldingssystem Version Vejledning. Indholdsfortegnelse

Mbridge tilmeldingssystem Version Vejledning. Indholdsfortegnelse Mbridge tilmeldingssystem Version 15-03-2018. Vejledning. Indholdsfortegnelse Indholdsfortegnelse Indledning...2 Backup...2 Tilmelding til turnering (spillere)...3 Rette tilmelding...5 Slet tilmelding...5

Læs mere

Login og introduktion til SEI2

Login og introduktion til SEI2 BRUGERVEJLEDNING 2019 Login og introduktion til SEI2 Sundhedsdatastyrelsens Elektroniske Indberetningssystem Forord Dette er en brugermanual (1. udgave), der teknisk beskriver, hvordan man logger på Sundhedsdatastyrelsens

Læs mere

Projekt 3: Interaktionsudvikling 11/04.14

Projekt 3: Interaktionsudvikling 11/04.14 Projekt 3: Interaktionsudvikling 11/04.14 Gruppe 5 http://kostecki.dk/cph/cupcakes/v2/opskrifter.php Christina Juulmann www.chrissycreations.dk Jacob Kostecki www.kostecki.dk Jayne Alice www.jaynealice.com

Læs mere

Overfør filer til Office 365 - online

Overfør filer til Office 365 - online Introduktion til Office 365 online portal Office 365 er det nye system som vi overgår til efter sommerferien (skole året 2014-2015). Alle får pr. automatik tildelt en konto når de starter på Hjørring Gymnasium

Læs mere