07. april 2004 - 12:20Der er
41 kommentarer og 1 løsning
Cookie: vis hvor mange gange siden har været loadet
Jeg vil gerne lave en tom aspx-side, hvor:
1. gang siden loades skal Velkommen.html loades i et nyt vindue der måler fx. 200x200 (eller der skal vises en eller anden form for pop-up der siger velkommen bla bla bla)
Derefter skal siden, når den loades, skrive en linie tekst, der viser hvor mange gange siden har været besøgt fra netop den PC der besøger den.
Jeg har følgende ide til løsning:
Hver gang aspx-siden loades forsøges at læse fra en cookie.
A. Findes cookie'n ikke, loades velkommen.html i et vindue, og der skrives en cookie, hvor en tæller sættes lig 1.
B. Findes cookien, læses tælleren i cookien, sættes op med en, og cookien skrives igen med den nye værdi for tælleren. Der skrives teksten til aspx-siden: "Du har besøgt siden X gange", hvor X er læst fra cookien.
Hvorfor anvender du cookies? Du kunne evt. overveje at anvende Server-Based eller SQL Server-Based Session Object. Jeg mener ikke cookies skal anvendes her, da det ikke har noget at gøre med klienten, men derimod applikátionen.
Derved kan du lagre din Session i databasen og så hver gang: - hente den - +1 til antal - gemme den igen.
Poienten er, at brugerne får vist hvor mange gange de selv har loadet sitet fra netop deres egen PC... Altså IKEK hvor mange gange siden er loadet i alt, men hvor mange gange den er blevet vist på netop den eneklte PC.
Det kan vel ikke gøres uden cookiés?
Hvis man kan løse det smartere/nemmere, hører jeg gerne herom :o) Kender ikke "Session object"
if (antal == 0) { this.message.Text = "Det er første gang du ser denne side"; } else { this.message.Text = String.Format("Hej og velkommen, det er {0} gang du ser denne side", antal); }
antal++; this.Antal = antal;
}
int Antal { get { try { antal = int.Parse(Request.Cookies["minCookie"].Value); } catch { antal = 0; }
return antal; }
set { Response.Cookies.Add(new HttpCookie("minCookie", antal.ToString())); } }
if (antal == 0) { this.message.Text = "Det er første gang du ser denne side"; } else { this.message.Text = String.Format("Hej og velkommen, det er {0} gang du ser denne side", antal); }
antal++; this.Antal = antal;
}
int Antal { get { int antal;
try { antal = int.Parse(Request.Cookies["minCookie"].Value); } catch { antal = 0; }
return antal; }
set { Response.Cookies.Add(new HttpCookie("minCookie", value.ToString())); } }
Hjælpeløs - hmmm. Først skulle jeg bruge tid på at finde ud af hvad kommandoen window.open hedder, dernæst eksempler på hvordan man bruger den. Det tager dig 3 sek at give et eksempel...
Grunden til at jeg gerne vil have svar på ALT hvad jeg spørger om er, at jeg har NUL erfaring med c#, og minimal med asp.net generelt. Derfor ser jeg hellere, at jeg får et fyldestgørende svar på præcis vad jeg spørger om, så jeg slipper for selv at bruge tiden på at opfinde den dybe tallerken. Det er egentligt grunden til at jeg spørger her, ikke?
For at returnere den, så tog det dig 10 indlæg at svare på min spørgsmål. Hvorfor skriver du ikke bare et enkelt, så vi slipper for al denne skriven frem og tilbage? ;o)
du siger du ikke er grøn i programmering, og da princippet i de fleste sprog er det samme burde det være nok at få at vide hvordan man læser og skriver en cookie, resten burde jo sige sig selv? Incrementere en integer-variable og lave en if-sætning. Det burde ikke være svært hvis man har erfaring med programmering :)
Nogle gange kan det altså godt betale sig at læse en manual eller artikkel, istedet for at få serveret alt på et sølvfad. Hvis det er fordi at man gerne vil have hele koden til noget, så er der en freelance-kategori hvor der sikkert er folk der med glæde vil kode et helt site til dig.
Jeg vil meget hellere forklare principperne i hvordan det skal gøres, istedet for bare at smide koden i hovedet på folk. Det lærer man meget mere af, at sidde og pusle med det selv, og når man har noget at gå ud fra er det ikke så slemt. Med google og .Net SDK'et ved hånden går man sjældent galt i byen.
Jeg er faktisk enig - og vil naturligvis helst forstå den kode jeg bruger... Men når jeg er 100% grøn i både javascript og c# kan det være svært at fatte noget så simpelt som
int Antal { get {
int - forstås der Ingeter - hvordan skal { opfattes osv osv osv.
Og det var et konkret problem jeg skulle have løst - er måske lidt overkill at få fat i en bog. Havde det været i VB.NEt og ikke c# havde jeg nok haft lettere ved det :o)
Men tak for hjælpen - jeg kan trøste dig med at jeg faktisk er enig med dig, men nogen gange springer man jo over hvor gærdet er lavest...
int antal = this.Antal; if (antal == 0) { java script:window.open('Velkommen.html','Velkommen','width=400,height=300');; } else { this.message.Text = String.Format("Det er {0}. gang DU ser denne side", antal); } antal++; this.Antal = antal; }
int Antal { get { int antal; try { antal = int.Parse(Request.Cookies["MothCookie2"].Value); } catch { antal = 0; } return antal; }
set { Response.Cookies.Add(new HttpCookie("MothCookie2", value.ToString())); } }
<-----------SLUT------> Er overbevist om at fejlen kommer fra java script:window.open('Velkommen.html','Velkommen','width=400,height=300');; Velkommen.html findes naturligvis...
if (antal == 0) { this.message.Text = "<script language=\"javascript\">window.open('Velkommen.html','Velkommen','width=400,height=300');</script>"; } else { this.message.Text = String.Format("Det er {0}. gang DU ser denne side", antal); } ...zip
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.