Avatar billede martin_moth Mester
07. april 2004 - 12:20 Der 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.



Er ret grøn i .NET (men ikke i programmering), håber på et fint svar. Har læst lidt på www.w3schools.com og på http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchASPNETCookies101.asp
Avatar billede javanewbie11 Nybegynder
07. april 2004 - 13:01 #1
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.
Avatar billede javanewbie11 Nybegynder
07. april 2004 - 13:02 #2
Måske har jeg misforstået dit spørgsmål :(
Avatar billede martin_moth Mester
07. april 2004 - 13:27 #3
Det ved jeg ikek om du har.

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"
Avatar billede martin_moth Mester
08. april 2004 - 11:52 #4
Anyone?
Forhøjer til 100 :o)
Avatar billede martin_moth Mester
09. april 2004 - 16:13 #5
Ikke meget gang i den - forhøjer til 200...

Er der ingen asp.net brugere der anvender eksperten???
Avatar billede burningice Nybegynder
13. april 2004 - 22:49 #6
Læs cookies:

int antal;
try {
  antal = int.Parse(Request.Cookies["mincookie"].Value);
} catch {
  antal = 0;
}

Skriv cookie:

Response.Cookies.Add(new HttpCookie(antal.ToString());
Avatar billede burningice Nybegynder
13. april 2004 - 22:50 #7
sorry

Skriv cookie:

Response.Cookies.Add(new HttpCookie("mincookie", antal.ToString());
Avatar billede martin_moth Mester
14. april 2004 - 07:43 #8
For 200 p, kan jeg så ikke få hele spørgsmålet besvaret?

Altså den komplette kode til sp. A og B i mit oprindelig spørgsmål
Avatar billede burningice Nybegynder
14. april 2004 - 09:27 #9
int antal;
try {
  antal = int.Parse(Request.Cookies["mincookie"].Value);
} catch {
  antal = 0;
}

if (antal == 0) {
  Response.Write("java script:windows.open('velkommen.html')");
}

antal++;

Response.Cookies.Add(new HttpCookie("mincookie", antal.ToString());
Avatar billede martin_moth Mester
14. april 2004 - 09:39 #10
Stadig ikke helt besvaret spørgsmål B (beklager, men javascript er ikke min stærke side...)

Og hvor skal jeg indsætte det i min index.html side?

Du skal nok få points
Avatar billede burningice Nybegynder
14. april 2004 - 09:46 #11
Response.Write(String.Format("Hej, du har besøgt siden {0} gange", antal));
Avatar billede burningice Nybegynder
14. april 2004 - 09:47 #12
ved du hvad... hvis du lige venter en time eller tre, så laver jeg en hel aspx-side til dig, er lige på vej ud af døren nu
Avatar billede martin_moth Mester
14. april 2004 - 10:42 #13
:o)
Avatar billede burningice Nybegynder
14. april 2004 - 11:47 #14
http://www.burningice.dk/eksperten.dk/486844/¨

<%@Import Namespace="System.Data" %>

<script language="c#" runat="server">

int antal;

void Page_Load(object sender, EventArgs e) {

  antal = this.Antal;

  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()));
  }
}

</script>

<asp:label ID="message" runat="server" />
Avatar billede burningice Nybegynder
14. april 2004 - 11:50 #15
den her kode er bedre:

<%@Import Namespace="System.Data" %>

<script language="c#" runat="server">

void Page_Load(object sender, EventArgs e) {

  int antal = this.Antal;

  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()));
  }
}

</script>

<asp:label ID="message" runat="server" />
Avatar billede martin_moth Mester
14. april 2004 - 12:14 #16
Perfekt - mangler blot at åbne et nyt vindue med velkommen.html, fx. 300x400, hvis det er første gang den åbnes.
Avatar billede martin_moth Mester
14. april 2004 - 12:16 #17
Og at du smider et svar...
Avatar billede burningice Nybegynder
14. april 2004 - 12:52 #18
ja... havde lidt travlt, og window.open() drillede lidt :/
Avatar billede martin_moth Mester
14. april 2004 - 12:55 #19
Ok - bare når du har tid engang, så smid lige en window open ind - gerne så den åbner velkommen.html i en bestemt fast størrelse, fx. 400x300
Avatar billede burningice Nybegynder
14. april 2004 - 13:07 #20
lad nu vær med at være så hjælpesløs: http://tech.irt.org/articles/js205/index.htm
Avatar billede burningice Nybegynder
14. april 2004 - 13:09 #21
window.open('velkommen.html','Velkommen','width=400,height=300');
Avatar billede martin_moth Mester
14. april 2004 - 13:34 #22
Takker...

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)

Men tak for hjælpen :o)
Avatar billede burningice Nybegynder
14. april 2004 - 13:43 #23
prøv at søg efter javascript popup window på google (http://www.google.com/search?sourceid=navclient&ie=UTF-8&oe=UTF-8&q=javascript+popup+window), det hjælper :)

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.
Avatar billede martin_moth Mester
14. april 2004 - 14:25 #24
OK :o)

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...
Avatar billede martin_moth Mester
14. april 2004 - 14:30 #25
Med risiko for at blive skældt hæder og ære fra:

Der kommer Server Error for følgende kode:


<-----------START------>


<%@Import Namespace="System.Data" %>
<script language="c#" runat="server">
void Page_Load(object sender, EventArgs e) {

  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()));
  }
}

</script>

<html>
<head>
<link HREF="styleupdate.css" rel="stylesheet">
</head>
<body bgcolor="#edede0">
<p class="sidstopdaterettekst">
<asp:label ID="message" runat="server" />
</p>
</body>
</html>

<-----------SLUT------>
Er overbevist om at fejlen kommer fra
java script:window.open('Velkommen.html','Velkommen','width=400,height=300');;
Velkommen.html findes naturligvis...
Avatar billede burningice Nybegynder
14. april 2004 - 14:43 #26
du skal skrive strengen ud, C#-kompileren forstår ikke javascript... kommer du fra asp-miljø, eller hvad har du programmeret med før?

Response.Write("java script:window.open('Velkommen.html','Velkommen','width=400,height=300');");
Avatar billede martin_moth Mester
14. april 2004 - 14:45 #27
Måske der ikke skulle stå sådan to her i træk...

;;

Ikke at det rettede fejlen - den er der stadig. Øv

Har prøvet med

this.message.Text = "<script type="text/javascript">window.open('Velkommen.html','Velkommen','width=400,height=300')</script>"

Men fejler også - sikkert bl.a. fordi der er nogle " i min tekst - hvordan man skriver " i en string i c# ved jeg ikke...
Avatar billede martin_moth Mester
14. april 2004 - 14:45 #28
Aldrig arbejdet med script før - kun alm. programmering.
Avatar billede martin_moth Mester
14. april 2004 - 14:47 #29
Øhh - nu får jeg bare skrevet

java script:window.open('Velkommen.html','Velkommen','width=400,height=300');

ud - men koden eksekveres ikke.

Skal jeg ikek have et <script> tag inf foran og et </script> bagefter som jeg foreslår ovenfor?
Avatar billede burningice Nybegynder
14. april 2004 - 14:53 #30
okay.. ja, så kan det godt virke lidt nyt...

jo, nu du siger det, så er det kun ved events at man kan bruge java script:<koden>

Dette skulle virke

string script = "<script language=\"javascript\">";
script += "window.open('Velkommen.html','Velkommen','width=400,height=300');";
script += "</script>";

this.RegisterStartupScript("WindowOpener", script);

Response.Write("<script language=\"javascript\">");
Response.Write("window.open('Velkommen.html','Velkommen','width=400,height=300');");
Response.Write("</script>");
Avatar billede burningice Nybegynder
14. april 2004 - 14:54 #31
hov, de sidste 3 Response.Write skulle ikke med
Avatar billede martin_moth Mester
14. april 2004 - 14:57 #32
Punkt 1: Tak fordi du gider hjælpe
Punkt 2: Server error...


<-----------START------>


<%@Import Namespace="System.Data" %>
<script language="c#" runat="server">
void Page_Load(object sender, EventArgs e) {

  int antal = this.Antal;
  if (antal == 0) {
    string script = "<script language=\"javascript\">";
    script += "window.open('Velkommen.html','Velkommen','width=400,height=300');";
    script += "</script>";
    this.RegisterStartupScript("WindowOpener", script);  }
  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()));
  }
}

</script>

<html>
<head>
<link HREF="styleupdate.css" rel="stylesheet">
</head>
<body bgcolor="#edede0">
<p class="sidstopdaterettekst">
<asp:label ID="message" runat="server" />
</p>
</body>
</html>
Avatar billede martin_moth Mester
14. april 2004 - 15:02 #33
Jeg fatter ikke hvorfor dette heller ikke virker:

...zip 

  int antal = this.Antal;

  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
Avatar billede burningice Nybegynder
14. april 2004 - 15:13 #34
hvad med den her:


      string script = "<script language=\"javascript\">";
      script += "window.open('Velkommen.html','Velkommen','width=400,height=300');<";
      script += "/script>";
      this.RegisterStartupScript("WindowOpener", script);
Avatar billede martin_moth Mester
14. april 2004 - 15:18 #35
Sådan her:

<-------------------START----------------------->

<%@Import Namespace="System.Data" %>

<script language="c#" runat="server">

void Page_Load(object sender, EventArgs e) {

  int antal = this.Antal;

  if (antal == 0) {
      string script = "<script language=\"javascript\">";
      script += "window.open('Velkommen.html','Velkommen','width=400,height=300');<";
      script += "/script>";
      this.RegisterStartupScript("WindowOpener", script);
     
     
  }
  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["MothCookie12212"].Value);
      } catch {
        antal = 0;
      }

      return antal;
  }

  set {
      Response.Cookies.Add(new HttpCookie("MothCookie12212", value.ToString()));
  }
}

</script>


<html>
<head>
<link HREF="styleupdate.css" rel="stylesheet">
</head>
<body bgcolor="#edede0">
<p class="sidstopdaterettekst">
<asp:label ID="message" runat="server" />
</p>
</body>
</html>

<-------------------SLUT----------------------->
Så kommer der ingen fejl, men der bliver heller ikke åbnet noget vindue med Velkommen.html
Avatar billede martin_moth Mester
16. april 2004 - 10:19 #36
cyberfessor: Har du en løsning?

Det burde vel være simpelt at få åbnet et vindue. Men jeg er jo så hjælpeløs (he he)

;o)


Hvis du ikke svare, så tror jeg at jeg lukker, og giver dig points, og opretter et nyt sp. med hvordan man får åbnet det vindue med Velkommen.html
Avatar billede burningice Nybegynder
16. april 2004 - 10:29 #37
sådan: http://www.burningice.dk/eksperten.dk/486844/

  if (antal == 0) {

      string script = "<script language=\"javascript\">";
      script += "window.open('Velkommen.html','Velkommen','width=400,height=300');<";
      script += "/script>";

      Response.Write(script);

  } else {

ved ikke lige hvorfor at RegisterStartupScript() ikke virkede
Avatar billede martin_moth Mester
16. april 2004 - 10:59 #38
Kanon.

this.message.Text = String.Format("Det er {0}. gang DU ser denne side", antal);

Hvis jeg vil lægge 100 til der hvor tælleren bliver udskrevet (men ikke selve tælleren), hurn er syntaksen så?


this.message.Text = String.Format("Det er {0 + 100}. gang DU ser denne side", antal);
??
Avatar billede martin_moth Mester
16. april 2004 - 10:59 #39
Og smid et svar
Avatar billede burningice Nybegynder
16. april 2004 - 11:18 #40
nej... det er jo antal-variablen der bliver sat ind på {0}'s plads, altså skal du skrive

this.message.Text = String.Format("Det er {0}. gang DU ser denne side", antal+100);
Avatar billede martin_moth Mester
16. april 2004 - 11:39 #41
Smart - det er lidt anderledes end det jeg roder med.

Tak for hjælpen - nu skal jeg nok lade være med at kage mere rundt i det her!
Avatar billede burningice Nybegynder
16. april 2004 - 11:46 #42
:) øvelse gør mester
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester