Avatar billede foralias Praktikant
03. april 2006 - 09:19 Der er 22 kommentarer og
1 løsning

Checke om bruger har været ind og se siden, hvis ikke skift farve

Ja det er lidt svært at finde en passende overskrift.

Jeg har et intranet hvor jeg har nogle info sider fra forskellige afdelinger. Der står [Info fra afdelingen]+["Dato for sidste ændring"]
Hvordan får jeg nemmest [Info fra afdlingen]'s feltet til at skifte baggrund, hvis brugeren ikke har været inde og se det sidste nye?

Jeg står med to løsninger - måske.

1. Jeg ligger datoen for sidste besøg ned en database og sammenligner med datoen for sidste ændring.

2. Cookies - Eneste problem her er at jeg ikke kender noget til cookies.

Hvad er jeres forslag?
Avatar billede wolfgang Praktikant
03. april 2006 - 09:25 #1
Hvis det er muligt at benytte cookies (uden problemer) på jeres Intranet, vil jeg tro at det er den bedste løsning.

Tag evt. et kig på dette website: http://www.w3schools.com/asp/asp_cookies.asp
Avatar billede foralias Praktikant
03. april 2006 - 09:30 #2
Nu kender jeg ikke så meget til cookies - endnu ;-)

Men siden ser jo ret nem ud.
Nu skriver du (uden problemer), hvad mener du med det?
Avatar billede foralias Praktikant
03. april 2006 - 09:31 #3
Cookien er bruger afhængig ikke? dvs. det er ikke maskinen men burgeren den følger?
Avatar billede fennec Nybegynder
03. april 2006 - 09:38 #4
Nej, cookies følger maskinen og IKKE brugeren. Så skifter de maskine dur det ikke.
Avatar billede wolfgang Praktikant
03. april 2006 - 09:39 #5
Cookie = filen bliver skrevet til brugerens PC og følger derfor PC'en.
I disse sikkerhedstider - skal du blot være sikker på at jeres interne sikkerhedspolitik tillader lagring af Cookies på den lokale PC. (Skulle ikke være noget issue, da der er tale om et internt og trusted netværk).

Din ide med lagring af brugerinfo i databasen, vil også være en OK løsning.
Jeg vil anbefale dig at oprette et felt i din tabel med brugerinfo, du opdatere med dato og tid ved hvert godkendt login.
Avatar billede foralias Praktikant
03. april 2006 - 11:31 #6
Hvis cookien følger maskinen, tror jeg ikke jeg skal forfølge den sti.
Så bliver det nok noget med database i stedet.
Findes der evt. andre alternativer?
Avatar billede wolfgang Praktikant
03. april 2006 - 11:40 #7
Det er muligt at der findes alternative løsninger, men jeg kan ikke lige komme på nogen i skrivende stund.

Hvis du vælger løsningen med at skrive dato og tid for sidste login i databasen, tror jeg du har valgt rigtig. Du kan jo bruge den "log-information" til at se om brugerne er aktive (logget ind) på jeres Intranet.

Held og lykke med opgaven.
Avatar billede fennec Nybegynder
03. april 2006 - 11:41 #8
Nej, der er intet der følger brugeren (hvordan skulle den også vide, hvem der sidder bag tastaturet :o), så det skal du selv sørge for at gemme.

Du skal derfor som minimum have et login på din side, så du kan identificere brugeren (som wolfgang er inde på)

Da det er et intranet har du dog mulighed for at bruge AD (active directory), hvis I vel og mærke kører windows og IE, og skal logge på domænet. Så kan du nemlig få det brugernavn, som man er logget på maskinen med.
Avatar billede foralias Praktikant
03. april 2006 - 11:57 #9
Yep det er nemlig det vi gør.
Jeg har/kan hente brugerens initialer, og deraf også styre det.
Avatar billede fennec Nybegynder
03. april 2006 - 11:58 #10
Det er ret simplet at bruge AD.

Du skal bare fjerne "Anonymous access" på sitet i IIS. Der kommer så en login boks frem når brugeren vil se siden. Hvis IE kan se at sitet er en del af "intranet zonen" kommer loginboxen ikke, da den så automatisk sender brugernavnet på den person, der er logget på computeren. Man kan selv tilføje sitet til intranet zonen, hvis IE ikke selv kan finde ud af det. Det gøres under funktioner >> indstillinger >> sikkerhed

Du kan så hente brugernavn ud med:
logonName = Request.serverVariables("logon_user")
Avatar billede fennec Nybegynder
03. april 2006 - 11:59 #11
.. Så ikke din besked der. Men du har fundet ud af det :o)

Så er det bare at få sat DB'en op til at gemme oplysninger om hvornår man sidst var på...
Avatar billede steen_hansen Forsker
03. april 2006 - 12:07 #12
Jeg plejer at sætte dette inde på beskeden:

Conn.Execute("UPDATE mail SET unread = False WHERE mailID = " & RS("mailID"))

- hvilket betyder, at denne besked er læst. Hvis ikke unread = false, står teksten (emnet) med fed skrift. Ellers med almindelig skrift. Håber det kan bruges.
Avatar billede foralias Praktikant
03. april 2006 - 12:21 #13
tak for info Steen
Men det er vel kun noget som bliver gemt hvis brugeren er logge på hele tiden ikke?
Avatar billede steen_hansen Forsker
03. april 2006 - 12:54 #14
Nej, det bliver lagt ned i databasen
Avatar billede fennec Nybegynder
03. april 2006 - 12:57 #15
Du skal måske have lavet det lidt anderledes end Steen har gjort. Det kommer nemlig an på hvordan den info fra afdelingerne er oprette. Er det bare en html/ASP fil eller hentes det ud fra databasen??

Hvis det er fra DB skal vi vide mere om opbygningen af den. Er der flere rækker eller bliver gamle nyheder bare overskrevet??
Avatar billede steen_hansen Forsker
03. april 2006 - 12:57 #16
Det er til MS Access database. Det skal selvfølelig justeres til, hvis du benytter andet.
Avatar billede steen_hansen Forsker
03. april 2006 - 13:04 #17
Uanset hvem afsender/opretter er, og hvilken ID den har, vil emnet altid være med fed, sålænge den ikke er tilgået (læst). Men fennec har ret, det kræver et minimum af justering (et ekstra felt i DB).

Jeg bruger det til emner i en Indbakke; står emnet med fed skrift, er den beskeden ikke læst. Lige som i enhver anden e-mailklient.
Avatar billede foralias Praktikant
03. april 2006 - 14:20 #18
fennec -> pt. er siderne lidt en blanding af asp og database.
Min tanke var at lave et felt i en database hvori jeg opdatere dato & tid når brugeren går ind på info siden.
På hovedsiden, hvor jeg linker til alle infosiderne, sammenligner jeg datoen i databasen med den dato hvor filen sidst er ændret og stemmer de ikke overens bliver der lavet en eller anden markering.

Kan det ikke lade sig gøre?
Avatar billede steen_hansen Forsker
03. april 2006 - 14:24 #19
Dette kan måske hjælpe dig igang:

MS Access DB (kun eksempler):

newsID: Autonummerering, Primær nøgle
recipient: Tekst, obligatorisk, tillad nullængde: nej
headline: Tekst, obligatorisk, tillad nullængde: nej
message: Notat, obligatorisk, tillad nullængde: nej
unread: Sand/Falsk, Standardværdi: Sand, obligatorisk: nej

Ved opdatering af nyhederne, skal det eksisterende overskrives, og unread i Access-databasen sættes til True, hvis nyheden kun skal redigeres. Hvis en bruger så ikke får læst en nyhed, som du lægger på d. 3/4, vil den stå som ulæst. Laver du en ændring d. 4/4, og brugeren først får læst denne d. 5/4, vil brugeren ikke få de ændringer med, som blev lavet d. 3/4. Kommer der nye nyheder til, som ikke erstatter den nyeste, vil alle de gamle nyheder bare stå som læste.

Nu ved jeg ikke hvordan dit nyhedssystem er strikket sammen, og hvordan funktionaliteten er ment til at fungere. Personligt ville jeg foretrække dette, og så ellers smide de foregående ned i en liste, som man kan gå tilbage i og læse, når muligheden tilbyder sig. Her vil alle dem, som man ikke har læst, bare stå som værende ulæste, og resten som læste - selvfølgelig :o)

Jeg ved ikke om der er nok til at gå i gang med. Jeg vil gerne hjælpe med koden, hvis jeg kan. Jeg ved der er mange her, som er meget bedre til VB-scripting end jeg er. Bl.a. fennec, han er rå :o)
Avatar billede cyberkox Nybegynder
03. april 2006 - 14:48 #20
Du er vel nødt til at have 2 tabeller

En hvor nyhederne står i. Hver enkelt nyhed har så et newsID. Dernæst skal du have en ny tabel som indeholder:

ID | newsID | logonName | read

Hver gang en nyhed tilgås laver du et lille script:

logonname = Request.serverVariables("logon_user")

SQL = "select * newsread where logonName = "& logonname

if rs("read") = false then
Fed skrift eller en anden baggrundsfarve
Og så skal feltet READ opdateres:
Conn.Execute("UPDATE newsread SET [read] = True WHERE newsID = " & newsid) osv
else
Alm skrift, da den er læst af brugeren
end if
Avatar billede fennec Nybegynder
03. april 2006 - 16:02 #21
Dvs at info bare står i en ASP fil...

Så skal du have fat i fso objektet til at trække datoen for ændringen af filen ud.
Dernæst skal du, som du selv er inde på, opdatere en dato i DB'en nå en bruger kommer ind på info siden (IKKE på forsiden)

Info.asp
conn.execute("update brugerTabel set infoShowDate=now() where brugerNavn='"& Request.serverVariables("logon_user") &"'")

på forsiden laver du så dato tjekket:
Forside.asp
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("c:\webMappe\info.asp")
retDato = file.DateLastModified
set rs = conn.execute("select * from brugerTabel where infoShowDate>#"& retDato &"# and brugerNavn='"& Request.serverVariables("logon_user") &"'")
if not rs.eof then
  'Har set info
else
  'Har IKKE set info
end if
Avatar billede foralias Praktikant
04. april 2006 - 08:44 #22
fennec -> det var lige nøjagtig det jeg havde overvejet. Smid et svar.
Tak til alle for en god gang debat/oplysning.
Avatar billede fennec Nybegynder
04. april 2006 - 12:46 #23
.o) <-- One Eyed Jack
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
Kurser inden for grundlæggende programmering

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