Analyse af Online Biksen

Vi vil i dette afsnit analysere, hvorledes Online Biksen, vores prototype på en butik på Internettet, skal benytte cookies. Analysen omfatter overvejelser vedrørende design af kode, datagrundlag og brugergrænseflade.

Funktionalitet

Vores prototype på online butik med fokus på brugen af cookies skal give mulighed for at arbejde med en indkøbskurv, som man kan placere produkter i, se indholdet af eller tømme. Desuden skal man kunne se den samlede pris for de indkøbte varer, og naturligvis skal man også kunne oplyse og rette kundeinformation. Prototypen skal benytte JavaScript og den tilhørende .js inkluderingsfil med cookie-funktioner for almindelige cookies og compressed cookies.

Design af kode og datagrundlag

I butikken benyttes client-side cookies, når cookies skal sættes. Butikken skal kunne sætte cookies for information om brugernavn, kundeinformation og produktliste.

Denne information kan sættes som separate cookies eller som compressed cookies, som vi har beskrevet tidligere i rapporten. Vi vælger at sætte brugernavn i en separat cookie med navnet UserName. Kundeinformationen bestående af navn, adresse, postnummer, by, kreditkortnavn, kreditkornummer og udløbsdato vil vi sætte i én compressed cookie med navnet Entry for at spare i antallet af cookies, således at vi til disse informationer kun benytter én cookie. Til butikken vil vi også benytte cookies, men vi må vurdere, hvordan vi vil gøre det, for ikke at overskride grænsen for antal cookies, vi må sætte.

Butikken skal holde styr på de produkter, som kunden kan bestille fra, og de som kunden allerede har bestilt. Det kan gøres ved at sætte en cookie for hvert produkt, brugeren kan placere i sin indkøbskurv, og i cookien angive, hvilket antal af det tilhørende produkt, han har i sin indkøbskurv. Det sætter den begrænsning, at butikken kun kan indeholde 18 forskellige produkter (de to sidste bruges til brugernavn og kundeoplysninger). Man kunne istedet nøjes med at placere cookies for de produkter, kunden placerer i sin indkøbskurv. Medmindre kunden køber alle varer, opnår man derved et mindre antal cookies. Nu er det indkøbskurven, der sætter begrænsningen på 18 bestilte produkter.

Begge muligheder kunne også implementeres med én compressed cookie. Den mest pladsbesparende måde er kun at huske, hvilke produkter der findes i indkøbskurven. Fordelen er, at den før omtalte grænse for antallet af cookies ikke overskrides. Til gengæld kan man nu risikere at nå en anden begrænsning, nemlig at en cookie ikke må overskride 4 kb i størrelse, men denne grænse er af mere teoretisk karakter, da det ville kræve et meget stort antal produkter i indkøbskurven, eller meget store mængder af produkterne. Vi vælger derfor at bruge en compressed cookie til butikken, der kun husker de produkter, brugeren har i sin indkøbskurv, og det antal de findes i.

Bestillingsformen benytter som sagt kun én cookie til alle produkter. Når brugeren har indtastet et antal ud for de bestille produkter og trykket på "Læg i kurven", starter behandlingen af data. Formen gennemløbes via en løkke, som hele tiden holder øje med, hvilket produkt vi er nået til. Hvis det pågældende produkt har et antal påskrevet, gemmes produkt-ID og antal i en liste opdelt med et separator-tegn. Når hele formen er gennemløbet, gemmes denne liste med bestilte produkter som en cookie. Pseudokode for dette ser således ud:

For alle produktfelter i bestillingsformen
	Hvis feltet er udfyldt
		Gem produkt-ID, separator, antal og separator i en liste
Gem denne liste i en cookie

Udskrivning af bestilte produkter foretages meget nemt, idet cookien indeholdende informationen om bestilte produkter gennemløbes i en løkke, hvor produkt-ID og antal udskrives i en tabel. Samtidig skal totaler også findes for antal og pris. Pseudokoden for dette ser således ud:

Hvis cookie med produktliste findes
	Hent produktliste i cookien
	Husk nuværende position i produktliste
	For alle tegn i produktlisten
		Udskriv produkt-ID fra position til næste separator
		Husk position for tegnet efter separator
		Find dette produkt-ID's pris
		Udskriv antal fra position til næste separator
		Husk position for tegnet efter separator
		Udskriv pris*antal
		Totalantal = totalantal + antal
		Totalpris = totalpris + pris*antal
	Udskriv totalantal
	Udskriv totalpris

Dette princip skal også benyttes til udskrivning af bestilte produkter sammen med ikke-bestilte produkter i bestillingsformen. Her udskrives antallet for hvert bestilte produkt i det felt, som har samme nummer som produkt-ID. Det benyttede princip betyder, at produkter får faste produkt-IDs, som ikke må ændres, da eksisterende cookies med produktdata dermed ikke stemmer overens. Nye produkter skal derfor tillægges den eksisterende liste af produkter. Pseudokode for udskrivning i bestillingsformen er:

Hvis cookie med produktliste findes
	Husk nuværende position i produktliste
	For alle tegn i produktlisten
		Find produkt-ID fra position til næste separator
		Husk position for tegnet efter separator
		Find antal fra position til næste separator
		Husk position for tegnet efter separator
		Udskriv antal på felt med nummer som produkt-ID

Et godt spørgsmål er, hvorvidt andre produktdata end id og antal skal gemmes i cookien. Hvis man vælger at gemme prisen for det enkelte produkt også, betyder det, at man ikke løbende kan ændre sine priser, idet en bruger kan komme tilbage med en cookie med en gammel produktpris, hvorefter vedkommende ønsker at betale. Under alle omstændigheder skal man ikke basere sig udelukkende på data læst fra cookien men på en butiks egne interne oplysninger, når fakturaer skal udskrives eller betalingen skal foretages on-line. Her har en on-line butik brug for en bagvedliggende intern produktdatabase, som benyttes i sådanne tilfælde. Hvis vi antager, at en on-line butik har en sådan database, kan vi dermed også nøjes med at gemme produkt-ID og antal i cookien.

Løkkerne til input og output af produktdata i en cookie skal benytte sig af følgende JavaScript-funktioner:

formName.elements[index]

string.indexOf(substring, [n])

string.substring(n1, n2)

hvilket betyder, at produkt-ID starter med værdien 0, da første element i en form er 0.

Konklusion

På grund af vores afgrænsning i indledningen og vores formål med projektet har vores prototype på en online butik ikke al den funktionalitet, som bør være til stede i en færdig version. Online butikken kan for eksempel ikke varetage den endelige bestilling for kunden.

En mere avanceret variant af en online butik bør benytte en cookie til at identificere klienten. Denne identifikation kan så benyttes, når brugerens valg gemmes i en bagvedliggende database, som butikken benytter sammen med sine web-sider. Vores butik har fokuseret på at vise, hvad man kan gøre tilsvarende med cookies.

« Praksis: Teknisk analyse - Praksis: Analyse af webtracking »