Et site med kursusmaterialer, der bruges i forbindelse med undervisning i forskellige it relaterede emnerEn skøn grafik du kan nyde mens der undervises.
   

Send spørgsmål eller kommentar til Thor - klik her: Send en kommentar til Thor - omkring undervisning eller kursus  Søg i kursusmaterialerne. Kan bruges i forbindelse med undervisningen eller efter kurset  Til forsiden af kursusmaterialer.dk 

 

ASP.NET III / Avancerede web-forms / Gemme og hente brugerinfo


ASP.NET fjernundervisningskursus

- Vil du gerne på kursus NU?

- Vil du gerne lære i dit eget tempo?

- Har du ikke tid til at tage på kursus ude i byen?

Så køb et kursus i ASP.NET som fjernundervisning på www.it-fjernundervisning.dk


Identifikation af de besøgende

Der er to veje man kan gå, hvis man vil huske information om den besøgende mellem besøg.

  1. Gem den nødvendige information som en cookie på brugerens maskine
  2. Gem en identifikations nøgle på brugerens maskine og brug en til at slå brugerinformationerne op i en datakilde

Gem informationer på brugerens maskine

Det kunne se sådan her ud:

private void Page_Load(object sender, System.EventArgs e)
  {
   if (Request.Browser.Cookies)
   {
    if (Request.Cookies["SidsteBesoeg"] == null)
    {
     HttpCookie cookSidsteBesoeg = new HttpCookie("SidsteBesoeg", DateTime.Now.ToString());
     cookSidsteBesoeg.Expires = DateTime.Now.AddDays(1);
     Response.Cookies.Add(cookSidsteBesoeg);
     Response.Write("Dette er dit første besøg!");
    }
    else
    {
     HttpCookie cookSidsteBesoeg = Request.Cookies["SidsteBesoeg"];
     Response.Write("Du besøgte sidst siden: " + cookSidsteBesoeg.Value);
     Response.Cookies["SidsteBesoeg"].Value = DateTime.Now.ToString();
     Response.Cookies["SidsteBesoeg"].Expires = DateTime.Now.AddDays(1);
    }
   }
   else
   {
    Response.Write("Din browser understøtter ikke cookies");
   }
  }

Bemærk

  • Cookies er case sensitive
  • Expires angiver, hvornår brugerens maskine kan fjerne cookien igen. Normalt udløber cookien når sessionen slutter. Sætter man Expires til DateTime.MaxValue vil cookien aldrig udløbe
  • Man kan slette en cookie ved at at sætte: Response.Cookies["SidsteBesoeg"].Expires = DateTime.Now;

 

Brug af nøgler i cookies

Man kan gemme op til 4096 bytes information i en cookie og det er muligt at identificere informationen i cookien ved brug af nøgler:

private void butOK_Click(object sender, System.EventArgs e)
  {
   HttpCookie cookBrugerInfo = new HttpCookie("BrugerInfo");
   cookBrugerInfo["Fornavn"] = txtFornavn.Text;
   cookBrugerInfo["Efternavn"] = txtEfternavn.Text;
   cookBrugerInfo.Expires = DateTime.Now.AddDays(30);
   Response.Cookies.Add(cookBrugerInfo);
  }

Og vil man hente dem igen skal man skrive tilsvarende:

private void butHentData_Click(object sender, System.EventArgs e)
  {
   HttpCookie cookBrugerInfo = Request.Cookies["BrugerInfo"];
   txtFornavn.Text = cookBrugerInfo["Fornavn"];
   txtEfternavn.Text = cookBrugerInfo["Efternavn"];
  }

Gem bruger informationer på serveren

Processen er følgende

  1. Dan en unik nøgle, der kan identificere brugeren
  2. Gem denne nøgle i en cookie på brugerens maskine
  3. Skab en fil på serveren, der kan opbevare brugerinformationen
  4. Gem brugerinformationen på serveren, hvor den unikke nøgle bruges som index

Dan unik nøgle

Ja, det gøres som følger:

private void butOK_Click(object sender, System.EventArgs e)
  {
   HttpCookie cookBrugerID = Request.Cookies["BrugerID"];
   if (cookBrugerID == null)
    cookBrugerID = new HttpCookie("BrugerID", System.Guid.NewGuid().ToString());
   cookBrugerID.Expires = DateTime.Now.AddDays(30);
   Response.Cookies.Add(cookBrugerID);
   SetBrugerInfo(cookBrugerID.Value); //en procedure der gemmer brugerinformationerne i en fil eller database
  }

De to første punkter er dækket af ovenstående - resten er behandlet andetsteds.


   
Spacer Spacer Spacer Spacer