{"id":517,"date":"2011-11-18T08:31:15","date_gmt":"2011-11-18T06:31:15","guid":{"rendered":"http:\/\/www.kristiansborg.dk\/bibliotek\/?page_id=517"},"modified":"2011-11-18T08:32:28","modified_gmt":"2011-11-18T06:32:28","slug":"kapitel-6-lagring-af-information","status":"publish","type":"page","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/","title":{"rendered":"Kapitel 6 Lagring af information"},"content":{"rendered":"<p>Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt.<\/p>\n<p>Alt efter situationen kan man \u00f8nske at lagre information p\u00e5 forskellige m\u00e5der. Nogle oplysninger har lang gyldighed \u2013 eksempelvis en brugers navn. Andre oplysninger har kortere levetid \u2013 eksempelvis oplysninger om applikationens tilstand. Der er ogs\u00e5 oplysninger, som kun har interesse indenfor en enkelt session \u2013 det kan for eksempel v\u00e6re de valg, brugeren foretager p\u00e5 et web-sted.<\/p>\n<p>I ASP findes der tre forskellige m\u00e5der at lagre information p\u00e5. Det er applikations- og sessionsvariable samt cookies. Mens applikations- og sessionsvariable er serverorienterede, bliver cookies opbevaret p\u00e5 klienten. Cookies er ogs\u00e5 den eneste af de lagringsmetoder, der bliver beskrevet i dette kapitel, som kan v\u00e6re persistente \u2013 browseren giver mulighed for at opbevare cookies p\u00e5 brugerens harddisk.<\/p>\n<div style=\"border: 1px solid red; color: red\">\n<p><b>Du l\u00e6ser en gammel bog<\/b><\/p>\n<p>Den bog, du l\u00e6ser her, er fra 1999, og mange ting kan have \u00e6ndret sig siden da.<br \/>\nVi h\u00e5ber, at du stadig kan finde relevant information i den.<br \/>\nHvis du vil l\u00e6se aktuelle oplysninger om den aktuelle version af ASP.NET, anbefaler vi<br \/>\nbogen <a href=\"http:\/\/clk.tradedoubler.com\/click?p(197229)a(2029446)g(19172914)url(http:\/\/www.adlibris.com\/dk\/product.aspx?isbn=0735643385)\" onclick=\"javascript:pageTracker._trackPageview('\/outbound\/article\/http:\/\/clk.tradedoubler.com\/click?p(197229)a(2029446)g(19172914)url(http:\/\/www.adlibris.com\/dk\/product.aspx?isbn=0735643385)');\"  target=\"_blank\">Programming ASP.NET 4.0<\/a><img decoding=\"async\" src=\"http:\/\/impdk.tradedoubler.com\/imp?type(inv)g(19172914)a(2029446)\" \/>\n<\/div>\n<h1>Sessionsbaseret lagring<\/h1>\n<p>Der er mange fordele ved at anvende den sessionsbaserede lagring. N\u00e5r web-serveren selv h\u00e5ndterer sessionerne, er det en let m\u00e5de at styre de oplysninger, der kun er gyldige inden for en session. Et typisk eksempel p\u00e5 dette er indk\u00f8bskurven p\u00e5 et e-handelssted. Her kan forskellige web-sider hver tilf\u00f8je varer til den samme indk\u00f8bskurv. Samtidigt sikres det, at flere forskellige brugere kan tilg\u00e5 web-stedet p\u00e5 samme tid uden at se hinandens indk\u00f8bskurv.<\/p>\n<p>Der er imidlertid ogs\u00e5 en r\u00e6kke ulemper ved den sessionsbaserede lagring. Den v\u00e6sentligste er ironisk nok det, som i det ovenst\u00e5ende blev karakteriseret som en fordel. Det drejer sig om den automatiske h\u00e5ndtering af sessionerne. Web-serveren g\u00f8r naturligvis sit bedste for at h\u00e5ndtere sessioner korrekt, men det er en s\u00e6rdeles vanskelig opgave. Som n\u00e6vnt tidligere er HTTP-protokollen som udgangspunkt ikke sessionsbaseret. Det vil sige, at det er op til web-serveren selv at finde ud af det. Web-serveren har imidlertid ikke alle de oplysninger, der er n\u00f8dvendige, for at kunne foretage en fuldst\u00e6ndig korrekt beslutning \u2013 derfor bliver den nogle gange n\u00f8dt til at foretage et kvalificeret g\u00e6t.<\/p>\n<p>Problemet er, at det er sv\u00e6rt at sige, hvorn\u00e5r en session er afsluttet. Web-serveren f\u00e5r naturligvis besked, n\u00e5r der bliver hentet en side fra web-stedet \u2013 n\u00e5r det sker, er det sikkert, at sessionen ikke er afsluttet. Til geng\u00e6ld f\u00e5r web-serven intet at vide, n\u00e5r der ikke l\u00e6ngere bliver hentet sider \u2013 og af god grund. Hvis brugeren slukker for sit modem, n\u00e5r han har hentet den sidste side, er det sv\u00e6rt for web-serveren at f\u00e5 at vide, at sessionen er afsluttet. I stedet bruger web-serveren det, der hedder <em>timeout<\/em>. Ved timeout definerer man et tidsrum, som brugeren skal v\u00e6re aktiv indenfor. Det kan eksempelvis v\u00e6re tyve minutter. Hvis der g\u00e5r mere end tyve minutter fra det tidspunkt, brugeren hentede den sidste side, bliver det bestemt, at sessionen er udl\u00f8bet. Ulempen ved denne fremgangsm\u00e5de er, at det ikke er sikkert, at sessionen er afsluttet, blot fordi der er g\u00e5et tyve minutter. Hvis brugeren arbejder p\u00e5 sin computer imens, kan der sagtens g\u00e5 lang tid mellem sideforesp\u00f8rgslerne. Man kan ogs\u00e5 forestille sig, at brugeren er blevet forstyrret af g\u00e6ster, telefonopringninger eller toiletbes\u00f8g.<\/p>\n<p>Som det blev beskrevet tidligere, kan man i ops\u00e6tningen af IIS angive, hvor stort timeout-intervallet skal v\u00e6re. Angiver man et for lille interval, risikerer man, at gyldige sessioner bliver ramt af timeout, selv om de reelt ikke er afsluttede, men s\u00e6tter man derimod et stort interval, f\u00e5r man mange samtidige sessioner, da sessioner har lang varighed, og da det bruger en del hukommelse at opbevare alle sessionerne, belaster et stort timeout-interval serveren en del.<\/p>\n<h2>Implementering i ASP<\/h2>\n<p>Sessionsbaseret lagring af information foreg\u00e5r i ASP ved hj\u00e6lp af de s\u00e5kaldte sessionsvariable. Der findes i ASP et Session-objekt som indeholder sessionsvariablerne. Man s\u00e6tter en sessionsvariabel ved at skrive<\/p>\n<p>&nbsp;<\/p>\n<p>Session(&#8220;<em>navn<\/em>&#8220;) = <em>v\u00e6rdi<\/em>;<\/p>\n<p>&nbsp;<\/p>\n<p>Hvis man i stedet vil l\u00e6se v\u00e6rdien af sessionsvariablen, skriver man blot<\/p>\n<p>&nbsp;<\/p>\n<p>Session(&#8220;<em>navn<\/em>&#8220;);<\/p>\n<p>&nbsp;<\/p>\n<p>Hvis man s\u00e5ledes vil udskrive v\u00e6rdien af sessionsvariablen count, beh\u00f8ver man blot at skrive<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;%=Session(&#8220;count&#8221;);%&gt;<\/p>\n<p>&nbsp;<\/p>\n<h1>Applikationsbaseret lagring<\/h1>\n<p>Man kan ogs\u00e5 v\u00e6lge at lagre information p\u00e5 applikationsbasis. Oplysninger, der\u00a0 lagres p\u00e5 denne m\u00e5de, vil v\u00e6re tilg\u00e6ngelige hele applikationens levetid. De oplysninger, man v\u00e6lger at opbevare p\u00e5 denne m\u00e5de, er typisk indstillinger om applikationen. Det kan eksempelvis v\u00e6re databaseadresser og anden ops\u00e6tning.<\/p>\n<p>Fordelen ved applikationsbaseret lagring er, at man kan n\u00f8jes med at opbevare oplysninger et sted, hvor de kan tilg\u00e5s af ASP-programmer i alle sessioner. Ved kun at opbevare dataene et sted, sparer man hukommelse p\u00e5 web-serveren \u2013 plads som man i stedet kan bruge til at h\u00e5ndtere flere sessioner samtidigt og derved give brugerne kortere svartider.<\/p>\n<p>Selv om en af de store fordele ved applikationsbaseret lagring s\u00e5ledes er, at dataene opbevares et sted, er dette ogs\u00e5 en af de st\u00f8rste ulemper. Hvis man har mange aktive sessioner samtidigt, risikerer man, at sessionerne l\u00e6ser og \u00e6ndrer applikationsvariablerne samtidigt. Man kan eksempelvis forestille sig nedenst\u00e5ende ASP-dokument, der bliver udf\u00f8rt i to sessioner samtidigt.<\/p>\n<p>&nbsp;<\/p>\n<p>L\u00e6s applikationsvariablen A<\/p>\n<p>L\u00e6g en til applikationsvariablen A<\/p>\n<p>Gem v\u00e6rdien i applikationsvariablen A<\/p>\n<p>&nbsp;<\/p>\n<p>Da web-servere sj\u00e6ldent har liges\u00e5 mange processorer, som der er samtidige sessioner, bliver ASP-kode fra flere sessioner afviklet p\u00e5 samme tid. Det betyder, at man ikke kan v\u00e6re sikker p\u00e5, at en session bliver afviklet f\u00e6rdig, f\u00f8r den n\u00e6ste bliver afviklet. Hvis ASP-programmet fra ovenst\u00e5ende eksempel bliver hentet i to forskellige sessioner p\u00e5 samme tid, kan programlinierne blive afviklet i nedenst\u00e5ende r\u00e6kkef\u00f8lge. Det antages, at applikationsvariablen A ved start har v\u00e6rdien 2.<\/p>\n<p>&nbsp;<\/p>\n<p>Session 1: L\u00e6s applikationsvariablen A (A er 2)<\/p>\n<p>Session 2: L\u00e6s applikationsvariablen A (A er 2)<\/p>\n<p>Session 2: L\u00e6g 1 til applikationsvariablen A (hvilket giver v\u00e6rdien 3)<\/p>\n<p>Session 2: Gem v\u00e6rdien i applikationsvariablen A (A er nu 3)<\/p>\n<p>Session 1: L\u00e6g 1 til applikationsvariablen A (Session 1 har tidligere l\u00e6st A til at v\u00e6re 2, og resultatet af denne beregning er derfor 3)<\/p>\n<p>Session 1: Gem v\u00e6rdien i applikationsvariablen A (A er nu 3)<\/p>\n<p>&nbsp;<\/p>\n<p>Resultatet af de 2 sessioner er s\u00e5ledes, at applikationsvariablen A f\u00e5r v\u00e6rdien 3, selv om det jo er tydeligt, at den skulle have haft v\u00e6rdien 4.<\/p>\n<p>Dette problem kaldes en <em>race condition<\/em>. En race condition opst\u00e5r, n\u00e5r to eller flere sessioner fors\u00f8ger at \u00e6ndre de samme variabler samtidigt, og resultatet kommer an p\u00e5 den r\u00e6kkef\u00f8lge, sessionerne blev afviklet i. Som det ses, skal race conditions undg\u00e5s.<\/p>\n<p>I ASP er der mekanismer til at undg\u00e5 disse problemer. Man kan l\u00e5se applikationsvariablerne, s\u00e5 man forhindrer andre sessioner i at tilg\u00e5 dem samtidigt. N\u00e5r der kun er en session, som kan \u00e6ndre variablerne ad gangen, er der ingen problemer. Man er s\u00e5ledes sikker p\u00e5 den r\u00e6kkef\u00f8lge sessionerne bliver afviklet i. Nedenst\u00e5ende eksempel viser, hvilken r\u00e6kkef\u00f8lge man er garanteret, at ovenst\u00e5ende eksempel bliver afviklet i.<\/p>\n<p>&nbsp;<\/p>\n<p>Session 1: L\u00e5s applikationsvariablerne<\/p>\n<p>Session 1: L\u00e6s applikationsvariablen A (A er 2)<\/p>\n<p>Session 1: L\u00e6g 1 til applikationsvariablen A (hvilket giver v\u00e6rdien 3)<\/p>\n<p>Session 1: Gem v\u00e6rdien i applikationsvariablen A (A er nu 3)<\/p>\n<p>Session 1: Frigiv applikationsvariablerne<\/p>\n<p>Session 2: L\u00e5s applikationsvariablerne<\/p>\n<p>Session 2: L\u00e6s applikationsvariablen A (A er 3)<\/p>\n<p>Session 2: L\u00e6g 1 til applikationsvariablen A (hvilket giver v\u00e6rdien 4)<\/p>\n<p>Session 2: Gem v\u00e6rdien i applikationsvariablen A (A er nu 4)<\/p>\n<p>Session 2: Frigiv applikationsvariablerne<\/p>\n<p>&nbsp;<\/p>\n<p>Som det ses, f\u00e5r A nu den rigtige v\u00e6rdi: 4.<\/p>\n<p>Man skal dog v\u00e6re p\u00e5passelig med at l\u00e5se applikationsvariablerne. N\u00e5r de er l\u00e5st, er det ikke muligt for andre sessioner at tilg\u00e5 dem, og man kan derfor risikere, at en lang r\u00e6kke sessioner ikke kan afsluttes, fordi en session har l\u00e5st applikationsvariablerne. Man skal derfor aldrig l\u00e5se applikationsvariablerne i l\u00e6ngere tid end h\u00f8jst n\u00f8dvendigt. Hvis programmet tillader det, kan man med fordel l\u00e6gge alle sine referencer til applikationsvariablerne i samme blok, og derved n\u00f8jes med at l\u00e5se dem en gang.<\/p>\n<p><script type=\"text\/javascript\"><!--\ngoogle_ad_client = \"ca-pub-3400894606969585\";\n\/* Bibliotek - ASP *\/\ngoogle_ad_slot = \"2386722770\";\ngoogle_ad_width = 336;\ngoogle_ad_height = 280;\n\/\/-->\n<\/script><br \/>\n<script type=\"text\/javascript\"\nsrc=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\n<\/script><\/p>\n<h2>Implementering i ASP<\/h2>\n<p>Applikationsvariabler h\u00e5ndteres p\u00e5 stort set samme m\u00e5de som sessionsvariabler. I stedet for at skrive Session(&#8220;<em>navn<\/em>&#8220;) skriver man blot Application(&#8220;<em>navn<\/em>&#8220;). Det betyder, at man kan s\u00e6tte en applikationsvariabels v\u00e6rdi ved at skrive<\/p>\n<p>&nbsp;<\/p>\n<p>Application(&#8220;<em>navn<\/em>&#8220;) = <em>v\u00e6rdi<\/em>;<\/p>\n<p>&nbsp;<\/p>\n<p>Ligeledes kan man l\u00e6se en applikationsvariabels v\u00e6rdi ved at skrive<\/p>\n<p>&nbsp;<\/p>\n<p>Application(&#8220;<em>navn<\/em>&#8220;);<\/p>\n<p>&nbsp;<\/p>\n<p>En forskel fra sessionsvariablerne er det dog, at man har mulighed for at l\u00e5se applikationsvariablerne, som det blev beskrevet i forrige afsnit. For at l\u00e5se applikationsvariablerne skriver man<\/p>\n<p>&nbsp;<\/p>\n<p>Application.Lock();<\/p>\n<p>&nbsp;<\/p>\n<p>mens man for at frigive dem skriver<\/p>\n<p>&nbsp;<\/p>\n<p>Application.Unlock();<\/p>\n<p>&nbsp;<\/p>\n<p>Et eksempel, der viser, hvordan man opt\u00e6ller og udskriver en applikationsvariabel, kan alts\u00e5 se s\u00e5ledes ud:<\/p>\n<p>&nbsp;<\/p>\n<p>Application.Lock();<\/p>\n<p>tal = Application(&#8220;Tal&#8221;);<\/p>\n<p>tal++;<\/p>\n<p>Application(&#8220;Tal&#8221;) = tal;<\/p>\n<p>Application.Unlock();<\/p>\n<h1>Cookies<\/h1>\n<p>Den sidste form for lagring af oplysninger, der bliver beskrevet i dette kapitel, er cookies. Cookies er udviklet af Netscape og er en teknologi, der g\u00f8r det muligt at opbevare oplysninger p\u00e5 brugerens computer. N\u00e5r man anvender ASP, som er server-baseret, kan det virke underligt, at man skal opbevare oplysninger p\u00e5 brugerens computer, men selv om der kan v\u00e6re mange uhensigtsm\u00e6ssigheder ved at anvende cookies, giver de ogs\u00e5 nogle muligheder, man ellers ikke har.<\/p>\n<p>Anvendelse af cookies best\u00e5r af to opgaver. At s\u00e6tte cookien og at l\u00e6se cookien. N\u00e5r man s\u00e6tter en cookie, tildeler man den en v\u00e6rdi, og man gemmer den p\u00e5 brugerens harddisk. N\u00e5r man l\u00e6ser en cookie, l\u00e6ser man v\u00e6rdien af en cookie, der tidligere er sat. Har man sat en cookie p\u00e5 en brugers harddisk, bliver denne automatisk sendt af browseren, n\u00e5r brugeren igen bes\u00f8ger det samme web-sted. Det skal bem\u00e6rkes, at et web-sted kun f\u00e5r tilsendt de cookies, det selv har sat \u2013 man kan alts\u00e5 ikke se de oplysninger, andre web-steder har sat.<\/p>\n<p>Som n\u00e6vnt g\u00f8r cookies det muligt at gemme oplysninger p\u00e5 brugerens computer. Ved at gemme en unik identificering af brugeren i en cookie p\u00e5 dennes computer, kan man \u2013 ved at l\u00e6se cookien igen \u2013 genkende brugeren. Dette kan man bruge til at lave en forholdsvis avanceret profil af brugeren. Man kender m\u00e5ske ikke brugerens navn eller e-mail-adresse, men ved at holde \u00f8je med, hvilke sider brugeren bes\u00f8ger p\u00e5 web-stedet, kan man danne sig et indtryk af, hvilke interesser vedkommende har. Driver man eksempelvis en s\u00f8gemaskine eller en online-avis, kan man l\u00e6re mange ting om en bruger ved henholdsvis at studere, hvilke ord, brugeren s\u00f8ger p\u00e5, og hvilke artikler brugeren l\u00e6ser. Denne fremgangsm\u00e5de er meget anvendt indenfor markedsf\u00f8ring, og blandt andet bannerreklamevirksomheden DoubleClick anvender den.<\/p>\n<p>Der findes imidlertid ogs\u00e5 en lang r\u00e6kke andre anvendelser for cookies. Hvis man eksempelvis tilbyder e-handel p\u00e5 sit web-sted, kan det v\u00e6re interessant at give brugeren mulighed for at gemme sin indk\u00f8bskurv lokalt, s\u00e5 de valgte varer ogs\u00e5 vil v\u00e6re valgt n\u00e6ste gang, brugeren bes\u00f8ger web-stedet. Man kan ogs\u00e5 give brugeren mulighed for at gemme nogle indstillinger, s\u00e5 man eksempelvis er fri for at v\u00e6lge mellem forskellige sprog, frames og lignende hver gang siden bes\u00f8ges.<\/p>\n<p>Selv om mulighederne ved cookies s\u00e5ledes er mange, skal man dog v\u00e6re opm\u00e6rksom p\u00e5 ulemperne. B\u00e5de Internet Explorer og Netscape Navigator underst\u00f8tter cookies \u2013 og endda p\u00e5 samme m\u00e5de \u2013 s\u00e5 man skulle tro, at man roligt kunne bruge dem i sikker forvisning om, at de blev accepteret af browseren. S\u00e5dan er det imidlertid ikke. Begge browsere giver brugeren mulighed for at sl\u00e5 cookies fra, hvilket vil betyde, at en side, der anvender cookies ikke vil virke. Man kan sagtens s\u00e6tte cookies, men de bliver ikke gemt p\u00e5 brugerens computer, hvilket betyder, at de ikke bliver sendt, n\u00e5r siden igen bes\u00f8ges. Dette medf\u00f8rer, at cookien ikke kan l\u00e6ses.<\/p>\n<p>Det er ikke helt klart, hvor mange brugere der har sl\u00e5et cookie-muligheden fra i deres browser, og tallet varierer meget. Med j\u00e6vne mellemrum dukker der en historie op om, at cookies udg\u00f8r en sikkerhedsrisiko, og at alle ansvarlige Internet-brugere derfor b\u00f8r sl\u00e5 dem fra. S\u00e5dan er sandheden imidlertid ikke. Cookies er en lille m\u00e6ngde data, som et web-sted kan bede browseren opbevare p\u00e5 brugerens harddisk. Det er browseren, der bestemmer placeringen af dataene, ligesom det er browseren, der bestemmer navnet p\u00e5 den fil, oplysningerne gemmes i. Derudover bliver dataene blot gemt \u2013 de bliver ikke udf\u00f8rt, og det er s\u00e5ledes ikke muligt at overf\u00f8re virus gennem en cookie. N\u00e5r cookien sendes til web-stedet igen, er det browseren, der sender cookien. Det vil sige, at det udelukkende er browseren, der bestemmer, hvilke oplysninger der sendes til web-stedet. Cookies kan alts\u00e5 heller ikke bruges til at tappe oplysninger fra en brugers computer. Der er s\u00e5ledes ingen grund til at frygte cookies eller at sl\u00e5 funktionen fra i sin browser.<\/p>\n<p>Set i lyset af ovenst\u00e5ende er det \u2013 som altid \u2013 en god ide at fort\u00e6lle brugeren, hvad man g\u00f8r. Anvender man cookies, b\u00f8r man derfor have en sektion p\u00e5 sit web-sted, der beskriver, hvad man bruger cookies til \u2013 og m\u00e5ske ogs\u00e5, hvad man <em>ikke<\/em> bruger dem til.<\/p>\n<p>Der findes flere forskellige former for cookies. Man kan v\u00e6lge at skelne mellem persistente og tempor\u00e6re cookies, men man kan ogs\u00e5 opdele cookies efter, hvilken web-sider, der modtager dem \u2013 dette bliver beskrevet senere i dette afsnit.<\/p>\n<p>Forskellen p\u00e5 en tempor\u00e6r og en persistent cookie er deres levetid. En tempor\u00e6r cookie lever kun, mens browseren er \u00e5ben \u2013 n\u00e5r browseren lukkes, bliver cookien slettet. Anvender man i stedet en persistent cookie, bliver cookien gemt p\u00e5 disk, n\u00e5r browseren lukkes. Persistente cookies lever dog ikke for evigt \u2013 man skal angive et udl\u00f8bstidspunkt, hvorefter cookien ikke l\u00e6ngere er gyldig. N\u00e5r en cookie ikke er gyldig, vil den ikke blive sendt til web-stedet.<\/p>\n<p>Som det blev antydet tidligere, kan man ogs\u00e5 angive, hvilke web-sider der skal modtage en bestemt cookie. Man kan v\u00e6lge mellem at lade cookien v\u00e6re tilg\u00e6ngelig for alle sider p\u00e5 web-stedet eller blot for sider i et bestemt katalog p\u00e5 web-serveren. Med denne opdeling kan man h\u00e5ndtere flere seperate applikationer p\u00e5 det samme web-sted. Har man eksempelvis en hjemmeside p\u00e5 et dom\u00e6ne, der indeholder flere web-steder (som det for eksempel er tilf\u00e6ldet med de fleste private Internet-udbydere som TeleDanmark, CyberCity og lignende), er det godt at sikre, at det kun er ens egen sider, der kan l\u00e6se de cookies, man s\u00e6tter.<\/p>\n<h2>Implementering i ASP<\/h2>\n<p>Implementeringen af cookies i ASP afspejler de to opgaver, der blev beskrevet tidligere: at s\u00e6tte en cookie og at l\u00e6se en cookie. N\u00e5r en cookie skal s\u00e6ttes, bruger man Response\u00ad-objektet, mens man bruger Request-objektet, n\u00e5r man vil l\u00e6se en cookie. Denne opdeling er ganske naturlig, n\u00e5r man t\u00e6nker p\u00e5, at de cookies, der skal l\u00e6ses, bliver sendt sammen med foresp\u00f8rgslen til web-serveren. Derfor er det Request-objektet, som indeholder de cookies, der allerede er sat. Ligeledes skal de cookies, man vil s\u00e6tte, sendes tilbage til browseren, og derfor er det logisk, at det er Response-objektet, der s\u00f8rger for at s\u00e6tte dem.<\/p>\n<p>Begge objekter indeholder en samling ved navn Cookies. Skal man s\u00e6tte en cookie, g\u00f8r man det ved at skrive<\/p>\n<p>&nbsp;<\/p>\n<p>Response.Cookies(&#8220;<em>navn<\/em>&#8220;) = <em>v\u00e6rdi<\/em>;<\/p>\n<p>&nbsp;<\/p>\n<p><em>Navn<\/em> er navnet p\u00e5 cookien \u2013 dette navn skal man bruge, n\u00e5r man en anden gang skal have cookiens v\u00e6rdi. <em>V\u00e6rdi<\/em> er en tekststreng, der indeholder de data, der skal gemmes i cookien.<\/p>\n<p>\u00d8nsker man en persistent cookie, skal man angive et udl\u00f8bstidspunkt. Det g\u00f8r man ved at s\u00e6tte den variabel, der hedder expires. Ethvert element i Cookies-samlingen indeholder en variabel ved navn expires, som angiver udl\u00f8bstidspunktet for hver enkelt cookie. For at angive en cookies udl\u00f8bstidspunkt skriver man<\/p>\n<p>&nbsp;<\/p>\n<p>Response.Cookies(&#8220;<em>navn<\/em>&#8220;).expires = <em>dato<\/em>;<\/p>\n<p>&nbsp;<\/p>\n<p>Det blev ogs\u00e5 beskrevet i foreg\u00e5ende afsnit, at man kan angive, hvilke web-sider cookien skal v\u00e6re tilg\u00e6ngelig for. Det g\u00f8r man med variablerne domain og path. Ligesom expires-variablen findes domain og path for alle cookies i samlingen. Domain angiver det dom\u00e6ne, cookien skal v\u00e6re tilg\u00e6ngelig p\u00e5. Det vil typisk v\u00e6re adressen p\u00e5 web-stedet \u2013 eksempelvis www.tekniskforlag.dk. Path angiver den sti, cookien skal v\u00e6re tilg\u00e6ngelig i. \u00d8nsker man, at cookien skal v\u00e6re tilg\u00e6ngelig for alle filer, der ligger i kataloget \/bog p\u00e5 www.tekniskforlag.dk, skal man alts\u00e5 s\u00e6tte Domain til tekststrengen www.tekniskforlag.dk\u00b8 mens Path-variablen skal s\u00e6ttes til strengen \/bog. Nedenst\u00e5ende eksempel viser den ASP-kode, der g\u00f8r dette.<\/p>\n<p>&nbsp;<\/p>\n<p>Response.Cookies(&#8220;mincookie&#8221;) = &#8220;test&#8221;;<\/p>\n<p>Response.Cookies(&#8220;mincookie&#8221;).Path = &#8220;\/bog&#8221;;<\/p>\n<p>Response.Cookies(&#8220;mincookie&#8221;).Domain = &#8220;www.tekniskforlag.dk&#8221;;<\/p>\n<p>&nbsp;<\/p>\n<p>L\u00e6sning af cookies sker som n\u00e6vnt gennem Request-objektet. For at l\u00e6se v\u00e6rdien af en cookie skriver man blot<\/p>\n<p>&nbsp;<\/p>\n<p>Request.Cookies(&#8220;<em>navn<\/em>&#8220;);<\/p>\n<p>&nbsp;<\/p>\n<p><em>Navn<\/em> skal v\u00e6re det navn, man brugte, da cookien blev sat. Vil man udskrive v\u00e6rdien af cookien navn, skriver man alts\u00e5 blot<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;%=Request.Cookies(&#8220;navn&#8221;);%&gt;<\/p>\n<h1>Sammenfatning<\/h1>\n<p>I dette kapitel er forskellige former for opbevaring af data blevet gennemg\u00e5et.<\/p>\n<p>Gennemgangen har omfattet serverbaseret lagring af henholdsvis sessions- og applikationsbaserede oplysninger samt lagring af oplysninger p\u00e5 klienten ved hj\u00e6lp af cookies.<\/p>\n<p>Selv om sessions- og applikationsorienterede oplysninger behandles p\u00e5 stort set samme m\u00e5de, skal man v\u00e6re opm\u00e6rksom p\u00e5, at det kan v\u00e6re n\u00f8dvendigt at l\u00e5se applikationsvariable, f\u00f8r de anvendes.<\/p>\n<p>Klientbaseret opbevaring med cookies kan bruges til at genkende brugeren og samle oplysninger om vedkommende.<\/p>\n<div style=\"border: 1px solid red; color: red\">\n<p><b>Du l\u00e6ser en gammel bog<\/b><\/p>\n<p>Den bog, du l\u00e6ser her, er fra 1999, og mange ting kan have \u00e6ndret sig siden da.<br \/>\nVi h\u00e5ber, at du stadig kan finde relevant information i den.<br \/>\nHvis du vil l\u00e6se aktuelle oplysninger om den aktuelle version af ASP.NET, anbefaler vi<br \/>\nbogen <a href=\"http:\/\/clk.tradedoubler.com\/click?p(197229)a(2029446)g(19172914)url(http:\/\/www.adlibris.com\/dk\/product.aspx?isbn=0735643385)\" onclick=\"javascript:pageTracker._trackPageview('\/outbound\/article\/http:\/\/clk.tradedoubler.com\/click?p(197229)a(2029446)g(19172914)url(http:\/\/www.adlibris.com\/dk\/product.aspx?isbn=0735643385)');\"  target=\"_blank\">Programming ASP.NET 4.0<\/a><img decoding=\"async\" src=\"http:\/\/impdk.tradedoubler.com\/imp?type(inv)g(19172914)a(2029446)\" \/>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt. Alt efter situationen kan man \u00f8nske at lagre information [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":452,"menu_order":60,"comment_status":"closed","ping_status":"open","template":"","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-517","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"keywords\" content=\"asp,session,cookie,harddisk,applikation,applikationsvariabel,sessionsvariabel,variable,variabel\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Biblioteket | Samling af artikler og b\u00f8ger\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Lagring af information | Active Server Pages | Biblioteket\" \/>\n\t\t<meta property=\"og:description\" content=\"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2011-11-18T06:31:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2011-11-18T06:32:28+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Lagring af information | Active Server Pages | Biblioteket\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-6-lagring-af-information\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/#listItem\",\"name\":\"B\\u00f8ger\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/#listItem\",\"position\":2,\"name\":\"B\\u00f8ger\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/#listItem\",\"name\":\"Active Server Pages\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/#listItem\",\"position\":3,\"name\":\"Active Server Pages\",\"item\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-6-lagring-af-information\\\/#listItem\",\"name\":\"Kapitel 6 Lagring af information\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/#listItem\",\"name\":\"B\\u00f8ger\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-6-lagring-af-information\\\/#listItem\",\"position\":4,\"name\":\"Kapitel 6 Lagring af information\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/#listItem\",\"name\":\"Active Server Pages\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#organization\",\"name\":\"Biblioteket\",\"description\":\"Samling af artikler og b\\u00f8ger\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-6-lagring-af-information\\\/#webpage\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-6-lagring-af-information\\\/\",\"name\":\"Lagring af information | Active Server Pages | Biblioteket\",\"description\":\"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \\u2013 i dette kapitel bliver hele emnet imidlertid gennemg\\u00e5et fuldst\\u00e6ndigt.\",\"inLanguage\":\"da-DK\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/b%c3%b8ger\\\/active-server-pages\\\/kapitel-6-lagring-af-information\\\/#breadcrumblist\"},\"datePublished\":\"2011-11-18T08:31:15+02:00\",\"dateModified\":\"2011-11-18T08:32:28+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#website\",\"url\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/\",\"name\":\"Biblioteket\",\"description\":\"Samling af artikler og b\\u00f8ger\",\"inLanguage\":\"da-DK\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.kristiansborg.dk\\\/bibliotek\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Lagring af information | Active Server Pages | Biblioteket","description":"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt.","canonical_url":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/","robots":"max-image-preview:large","keywords":"asp,session,cookie,harddisk,applikation,applikationsvariabel,sessionsvariabel,variable,variabel","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek#listItem","position":1,"name":"Home","item":"https:\/\/www.kristiansborg.dk\/bibliotek","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/#listItem","name":"B\u00f8ger"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/#listItem","position":2,"name":"B\u00f8ger","item":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/#listItem","name":"Active Server Pages"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/#listItem","position":3,"name":"Active Server Pages","item":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/#listItem","name":"Kapitel 6 Lagring af information"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/#listItem","name":"B\u00f8ger"}},{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/#listItem","position":4,"name":"Kapitel 6 Lagring af information","previousItem":{"@type":"ListItem","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/#listItem","name":"Active Server Pages"}}]},{"@type":"Organization","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#organization","name":"Biblioteket","description":"Samling af artikler og b\u00f8ger","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/"},{"@type":"WebPage","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/#webpage","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/","name":"Lagring af information | Active Server Pages | Biblioteket","description":"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt.","inLanguage":"da-DK","isPartOf":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#website"},"breadcrumb":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/#breadcrumblist"},"datePublished":"2011-11-18T08:31:15+02:00","dateModified":"2011-11-18T08:32:28+02:00"},{"@type":"WebSite","@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#website","url":"https:\/\/www.kristiansborg.dk\/bibliotek\/","name":"Biblioteket","description":"Samling af artikler og b\u00f8ger","inLanguage":"da-DK","publisher":{"@id":"https:\/\/www.kristiansborg.dk\/bibliotek\/#organization"}}]},"og:locale":"da_DK","og:site_name":"Biblioteket | Samling af artikler og b\u00f8ger","og:type":"article","og:title":"Lagring af information | Active Server Pages | Biblioteket","og:description":"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt.","og:url":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/","article:published_time":"2011-11-18T06:31:15+00:00","article:modified_time":"2011-11-18T06:32:28+00:00","twitter:card":"summary","twitter:title":"Lagring af information | Active Server Pages | Biblioteket","twitter:description":"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt."},"aioseo_meta_data":{"post_id":"517","title":"Lagring af information | Active Server Pages | #site_title","description":"Emnet lagring af information er tidligere blevet beskrevet i denne bog. Persistent lagring af information er gennemg\u00e5et i form af filer og databaser. Dette kapitel omhandler midlertidig lagring af information. Emnet er strejfet i tidligere kapitler \u2013 i dette kapitel bliver hele emnet imidlertid gennemg\u00e5et fuldst\u00e6ndigt.","keywords":[{"label":"ASP","value":"ASP"},{"label":"Session","value":"Session"},{"label":"cookie","value":"cookie"},{"label":"harddisk","value":"harddisk"},{"label":"applikation","value":"applikation"},{"label":"applikationsvariabel","value":"applikationsvariabel"},{"label":"sessionsvariabel","value":"sessionsvariabel"},{"label":"variable","value":"variable"},{"label":"variabel","value":"variabel"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[],"defaultGraph":"","defaultPostTypeGraph":""},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 06:59:15","updated":"2025-06-04 02:19:25","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/\" title=\"B\u00f8ger\">B\u00f8ger<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/\" title=\"Active Server Pages\">Active Server Pages<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tKapitel 6 Lagring af information\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.kristiansborg.dk\/bibliotek"},{"label":"B\u00f8ger","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/"},{"label":"Active Server Pages","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/"},{"label":"Kapitel 6 Lagring af information","link":"https:\/\/www.kristiansborg.dk\/bibliotek\/b%c3%b8ger\/active-server-pages\/kapitel-6-lagring-af-information\/"}],"_links":{"self":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/comments?post=517"}],"version-history":[{"count":3,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/517\/revisions"}],"predecessor-version":[{"id":519,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/517\/revisions\/519"}],"up":[{"embeddable":true,"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/pages\/452"}],"wp:attachment":[{"href":"https:\/\/www.kristiansborg.dk\/bibliotek\/wp-json\/wp\/v2\/media?parent=517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}