03. april 2006 - 09:19Der 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.
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.
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?
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.
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.
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")
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.
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??
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.
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.
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)
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
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
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.