/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Global.asa og Application variables
Fra : Thomas


Dato : 05-04-03 13:32

Hej.

Jeg har lavet et login system hvor brugernavn hentes fra en
database og sættes til en session variabel.

Jeg kunne godt tænke mig at man når man er logget ind i systemet
ud over at kunne se sit eget navn <% =
UCase(Session("Brugernavn")) %> også kan se evt. andre
brugernavne der er logget ind.

Jeg skal lige sige at jeg er totalt grøn i brugen af global.asa,
men jeg har lavet følgende script i global.asa og lagt filen i
roden af mit website:

<Script Language="VBScript" Runat="Server">

Sub Application_OnStart
   Application("Brugernavn") = Brugernavn
End Sub

</Script>

Jeg vil nu gerne kalde variablen og udskrive brugernavnene på de
brugere der er logget ind:

<%
      For Each Brugernavn In Application.Contents
         Response.Write Brugernavn & "<BR>"
      Next      
      %>

Det ser dog ikke ud til at virke og det eneste den skriver er
"Brugernavn".

Kan nogen se hvad jeg gør galt?

På forhånd tak!

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Chrisser (07-04-2003)
Kommentar
Fra : Chrisser


Dato : 07-04-03 07:28

"Thomas" <thomas@nexoenet.dk> skrev i en meddelelse news:b6micr$mb9$1@sunsite.dk...
> <Script Language="VBScript" Runat="Server">
>
> Sub Application_OnStart
> Application("Brugernavn") = Brugernavn
> End Sub
>
> </Script>
>
> Jeg vil nu gerne kalde variablen og udskrive brugernavnene på de
> brugere der er logget ind:
>
> <%
> For Each Brugernavn In Application.Contents
> Response.Write Brugernavn & "<BR>"
> Next
> %>

1. Hvad indeholder variablen Brugernavn, eller rettere, hvornår sætter du den variabel.

2. "Application_OnStart" bliver kaldt når Applicationen starter op, dvs IKKE hver gang der kommer en ny bruger på. Du skal nok i stedet for kiggge på "Session_OnStart" som bliver kaldt når en ny session for en bruger startes.

Mvh
Chrisser

Thomas (07-04-2003)
Kommentar
Fra : Thomas


Dato : 07-04-03 12:28

> 1. Hvad indeholder variablen Brugernavn, eller rettere, hvornår sætter du den variabel.
>
> 2. "Application_OnStart" bliver kaldt når Applicationen starter op, dvs IKKE hver gang der kommer en ny bruger på. Du skal nok i stedet for kiggge på "Session_OnStart" som bliver kaldt når en ny session for en bruger startes.
>
> Mvh
> Chrisser

Hej Chrisser,
Tak for svaret.

1. Variablen "Brugernavn" sættes ved login, hvor der valideres mod en database - altså om brugernavn og password findes i databsen.
Hvis begge gør, sættes brugernavnet til en session variabel og der redirectes til siderne, der kræver login.
På hver side valideres der så om session("Brugernavn") ikke er tom.

2. Jeg har nu ændret global.asa til:

<Script Language="VBScript" Runat="Server">

Sub Session_Onstart
   Session("Brugernavn") = " "
End Sub

</Script>

Ved ikke om det er korrekt at sætte den til at være tom fra starten (er som sagt totalt grøn i global.asa).

På siderne forsøger jeg så at trække alle brugernavne ud og liste under hinanden:

<%
      
      For Each Brugernavn In Session("Brugernavn")
         Response.Write Brugernavn & "<BR>"
      Next
      
      %>

Men får nu følgende meddelelse:

Microsoft VBScript runtime error '800a01c3'

Object not a collection

/includes/menu.inc, line 79

Kan du fortælle mig hvad fejlen er?

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Thomas (07-04-2003)
Kommentar
Fra : Thomas


Dato : 07-04-03 12:51

Har lige ændret global.asa til:

<Script Language="VBScript" Runat="Server">

Sub Session_OnStart
   Brugernavn = Session("Brugernavn")
End Sub

</Script>

Og løkken på siden til:

<%
      
      For Each Brugernavn In Session.Contents
         Response.Write Session("Brugernavn") & "<BR>"
      Next
      
      %>

Og nu skriver den ganske rigtigt brugernavnet, dog kun det navn man selv er logget ind som...

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (07-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-04-03 13:06

Thomas skrev:

> For Each Brugernavn In Session.Contents
> Response.Write Session("Brugernavn") & "<BR>"
> Next

> Og nu skriver den ganske rigtigt brugernavnet, dog kun det
> navn man selv er logget ind som...

Session-objektet er unikt for hver session - det vil sige hver
besøgende på siden. Du kan derfor kun udskrive session-indhold der
stammer fra din egen session. Hvis du skal have fat i alle
brugernavne skal du gemme dem i en særskilt variabel. Da
brugerlisten ikke er afhængig af den enkelte bruger bør listen
ligge i en Application-variabel i stedet for en sessionvariabel.

Se i øvrigt mit andet indlæg for et eksempel.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (07-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-04-03 12:52

Thomas skrev:

> Sub Session_Onstart
> Session("Brugernavn") = " "
> End Sub

> Ved ikke om det er korrekt at sætte den til at være tom fra
> starten (er som sagt totalt grøn i global.asa).

Det er ikke nødvendigt, men heller ikke forkert.


> For Each Brugernavn In Session("Brugernavn")

Det virker ikke. Session("Brugernavn") er en strengvariabel og
indeholder kun ét navn. Sessionvariablen ved ikke noget om andre
sessions.

> Object not a collection

For each kræver en collection (et array af en art) - og
Session("brugernavn") er ikke en collection.

Du skal gemme brugernavnene i en applicationvariabel. Du kan med
fordel bruge et dictionary-objekt, der har foruddefinerede .Add- og
..Remove-metoder. Se et eksempel her:

<http://www.2enetworx.com/dev/samples/memwhoson.asp>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408834
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste