[ASP] Weergave nieuwe reactie sinds laatste bezoek

Pagina: 1
Acties:

  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08 21:46
Ik heb een website met nieuwsitems waar tevens op gereageerd kan worden.

Nu wordt er een overzicht getoond van de laatste 20 nieuwsitems, met tevens het aantal reacties op de verschillende nieuwsitems.

Nu wil ik dat wanneer een bezoeker terugkeert naar dat overzicht, en er zijn nieuwe reacties geplaatst op de nieuwsitems die deze bezoeker bezocht heeft (dwz, op het nieuwsitem geklikt heeft zodat het hele nieuwsbericht (incl reacties) wordt weergevens), dat het getal met aantal reacties in het overzicht vet gedrukt wordt.

Het idee is dat de bezoeker dan eenvoudig kan zien wanneer er nieuwe reacties zijn gegeven.

Heeft iemand enig idee hoe ik dit kan bewerkstelligen? Ik zat te denken aan cookies, maar kom niet echt van start.

Let wel, de bezoeker logt niet in (voor het bekijken van het nieuwsitem of plaatsen van een reactie).

Voetbal is de belangrijkste bijzaak in het leven.


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 30-11 10:16

Swerfer

Hmm...

Als de bezoeker niet inlogt, en je met cookies werkt, dan heb je een groot probleem als de bezoeker zijn cookies wist. Je zit ergens in een file of database met een getal waar je nooit meer vanaf komt omdat niet te achterhalen is of de bezoeker zijn cookies heeft gewist of niet. (De cookie moet namelijk bestaan uit een unieke code, en de bezoeker krijgt natuurlijk nooit dezelfde code terug). Je zou alleen na bijvoorbeeld een bepaalde tijd geen bezoek dat getal kunnen wissen.

Nou kan een database natuurlijk meer 'getallen' opslaan als dat je waarschijnlijk ooit aan hits krijgt, maar toch.

Een simpele login zou toch de beste oplossing zijn...

[ Voor 4% gewijzigd door Swerfer op 20-04-2007 21:10 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08 21:46
Helaas is een login niet mogelijk (lees: niet gewenst door opdrachtgever ;) )

Het is dus eigenlijk niet te doen zonder een login te gebruiken?

Voetbal is de belangrijkste bijzaak in het leven.


  • newpegasus
  • Registratie: Juni 2003
  • Laatst online: 13-03-2022

newpegasus

Hertog

Kun je niet per IP-adres deze aantallen bijhouden?

GuitarFacts | Last.fm | Google Zoekmachine Optimalisatie


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 30-11 10:16

Swerfer

Hmm...

newpegasus schreef op vrijdag 20 april 2007 @ 21:18:
Kun je niet per IP-adres deze aantallen bijhouden?
Ip adressen zijn nog steeds bij veel mensen dynamisch toegewezen. En wat als er meerdere bezoekers achter 1 ip adres zitten...

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • newpegasus
  • Registratie: Juni 2003
  • Laatst online: 13-03-2022

newpegasus

Hertog

Swerfer schreef op vrijdag 20 april 2007 @ 21:32:
[...]

Ip adressen zijn nog steeds bij veel mensen dynamisch toegewezen. En wat als er meerdere bezoekers achter 1 ip adres zitten...
Ik ben met je eens dat mijn oplossing niet ideaal is, mede door de door jou genoemde redenen, maar het is nog altijd beter dan via een cookie. (IMHO)

Maar goed, een login lijkt mij inderdaad ook de meest waterdichte optie.

GuitarFacts | Last.fm | Google Zoekmachine Optimalisatie


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Waarom niet 'n cookie? Als iemand z'n cookies weggooit of überhaupt weigert, dan is het meestal ook wel 'n gebruiker met een dergelijk kennisniveau dat hij weet dat hij daarmee allerlei instellingen en last-visited zaken kwijt is. Perfect ga je het toch nooit krijgen. IP-adres is niet gebruikersgebonden (meerdere gebruikers op één computer of aansluiting), een cookie wel. Gooi je cookies weg, tsja, dat doe je zelf.
newpegasus schreef op vrijdag 20 april 2007 @ 21:36:
Maar goed, een login lijkt mij inderdaad ook de meest waterdichte optie.
Nee, het is geen optie.

[ Voor 20% gewijzigd door kenneth op 20-04-2007 22:07 ]

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08 21:46
kenneth schreef op vrijdag 20 april 2007 @ 22:05:
Waarom niet 'n cookie? Als iemand z'n cookies weggooit of überhaupt weigert, dan is het meestal ook wel 'n gebruiker met een dergelijk kennisniveau dat hij weet dat hij daarmee allerlei instellingen en last-visited zaken kwijt is. Perfect ga je het toch nooit krijgen. IP-adres is niet gebruikersgebonden (meerdere gebruikers op één computer of aansluiting), een cookie wel. Gooi je cookies weg, tsja, dat doe je zelf.


[...]
Nee, het is geen optie.
Maar hoe moet ik dan per nieuwsitem de gegevens in het cookie op slaan dan? Bijvoorbeeld NieuwsID en het aantal reacties op dat moment?

En idd, als de cookies leeg worden gegooid is dat zijn eigen zaak en zal hij niet de melding zien van nieuwe reacties.

Voetbal is de belangrijkste bijzaak in het leven.


Verwijderd

Je zet 1 cookie bij de client met daarin een uniek ID. Dat ID koppel je aan een tabel, en in die tabel sla je per nieuws item, de timestamp op waarop hij voor het laatst bekeken is, aan de hand van de timestamp uit die tabel kan je controleren of er later nog reacties geplaatst zijn op het bijhoorende nieuws item.

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 30-11 10:16

Swerfer

Hmm...

Brainpower schreef op vrijdag 20 april 2007 @ 22:11:
[...]

Maar hoe moet ik dan per nieuwsitem de gegevens in het cookie op slaan dan? Bijvoorbeeld NieuwsID en het aantal reacties op dat moment?

En idd, als de cookies leeg worden gegooid is dat zijn eigen zaak en zal hij niet de melding zien van nieuwe reacties.
Het gebruik van een database is waarschijnlijk het handigst. Je stuurt de gebruiker een unieke code die wordt opgeslagen als cookie, en diezelfde unieke code sla je ook op in de database. Je kunt de gebruiker dan altijd herkennen aan zijn cookie, en de bijbehorende data uit de database halen.

Ik zou wel na bijvoorbeeld 100 dagen de onopgevraagde unieke codes verwijderen. Anders wordt je database onnodig groot.

edit:

Je was me net voor ppx :X

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • kunnen
  • Registratie: Februari 2004
  • Niet online
Je kunt gewoon de laatste timestamp opslaan en dan later alles selecteren dat > timestamp? Of je slaat het grootste reactie ID op, zodat je later alle nieuwere selecteert?

(Dit alles in een cookie natuurlijk)

[ Voor 10% gewijzigd door kunnen op 20-04-2007 22:20 ]


Verwijderd

Pulsher schreef op vrijdag 20 april 2007 @ 22:20:
Je kunt gewoon de laatste timestamp opslaan en dan later alles selecteren dat > timestamp? Of je slaat het grootste reactie ID op, zodat je later alle nieuwere selecteert?

(Dit alles in een cookie natuurlijk)
Dat zou dan dus betekenen dat je per nieuwsbericht een cookie moet zetten, spaart je wel een tabel, maar of dat nou wensenlijk is voor de gebruiker...

-edit-
Of je zet alles in 1 cookie, met een split teken ofzo, maar dan moet de informatie voor alle nieuwsberichten met elke pagina request mee worden gestuurd, lijkt het mij slimmer als je alleen een ID bij de client zet en de rest uit je database haalt.

[ Voor 21% gewijzigd door Verwijderd op 20-04-2007 23:25 ]


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 08:43

sopsop

[v] [;,,;] [v]

Verwijderd schreef op vrijdag 20 april 2007 @ 23:23:
[...]

Of je zet alles in 1 cookie, met een split teken ofzo
ter info: je kunt een cookie aanmaken met keys erin.
Visual Basic:
1
2
3
4
5
6
<%
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Smith"
Response.Cookies("user")("country")="Norway"
Response.Cookies("user")("age")="25"
%> 

Waar ik overigens niet mee beweer dat dit 'the way to go' is. Als het om 10 berichten per maand gaat is dit an sich een prima optie, worden het er meer dan lijkt mij een unieke key + opslag in de database de beste oplossing.

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-12 12:24
Ik sla de tijd op wanneer de gebruiker op de site is in een cookie. Bij een volgend bezoek kun je dan vanaf die datum controleren welke berichten nieuw zijn voor gebruiker.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
dtmRealLastVisit = CDate(Request.Cookies("user")("reallastvisit"))
dtmEffectiveLastVisit   = CDate(Request.Cookies("user")("effectivelastvisit"))
        
'Hebben we al een lastvisit?
If Len(Request.Cookies("user")("reallastvisit")) > 0 Then
    'We zijn al eerder geweest | Store tijd in sessie
    If Len(Session("lastvisit")) = 0 Then
        Session("lastvisit") = CDate(Request.Cookies("user")("reallastvisit"))
    End If
End If
Response.Cookies("user")("reallastvisit") = Now()               
Response.Cookies("user").Expires=#May 10,2037#

  • NiMu83
  • Registratie: Januari 2001
  • Laatst online: 18-08 21:46
Phenomenon schreef op dinsdag 24 april 2007 @ 07:09:
Ik sla de tijd op wanneer de gebruiker op de site is in een cookie. Bij een volgend bezoek kun je dan vanaf die datum controleren welke berichten nieuw zijn voor gebruiker.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
dtmRealLastVisit = CDate(Request.Cookies("user")("reallastvisit"))
dtmEffectiveLastVisit   = CDate(Request.Cookies("user")("effectivelastvisit"))
        
'Hebben we al een lastvisit?
If Len(Request.Cookies("user")("reallastvisit")) > 0 Then
    'We zijn al eerder geweest | Store tijd in sessie
    If Len(Session("lastvisit")) = 0 Then
        Session("lastvisit") = CDate(Request.Cookies("user")("reallastvisit"))
    End If
End If
Response.Cookies("user")("reallastvisit") = Now()               
Response.Cookies("user").Expires=#May 10,2037#
Maar dit gaat toch niet werken als er per nieuwsitem aangegeven moet worden of deze voor de bezoeker nieuwe reacties bevat? Want dan zou je per bezochte nieuwsitem de viewdatum in een cookie moeten opslaan. En dat lijkt me wat veel dan. Of zie ik dat verkeerd?

[ Voor 13% gewijzigd door NiMu83 op 24-04-2007 12:28 ]

Voetbal is de belangrijkste bijzaak in het leven.


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-12 12:24
Nou de reactie heeft een timestamp, dus daar maak je een controle op. Alles wat een nieuwere datum heeft als de 'reallastvisit' is nieuw.

Om per reactie te gaan bijhouden of het gelezen lijkt mij teveel van het goede.

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Brainpower schreef op dinsdag 24 april 2007 @ 12:24:

Maar dit gaat toch niet werken als er per nieuwsitem aangegeven moet worden of deze voor de bezoeker nieuwe reacties bevat? Want dan zou je per bezochte nieuwsitem de viewdatum in een cookie moeten opslaan. En dat lijkt me wat veel dan. Of zie ik dat verkeerd?
In de TS schrijf je:
Nu wil ik dat wanneer een bezoeker terugkeert naar dat overzicht, en er zijn nieuwe reacties geplaatst op de nieuwsitems die deze bezoeker bezocht heeft (dwz, op het nieuwsitem geklikt heeft zodat het hele nieuwsbericht (incl reacties) wordt weergevens), dat het getal met aantal reacties in het overzicht vet gedrukt wordt.
Als je echt per bezocht nieuwsbericht de nieuwe reacties na het vorige bezoek wilt benadrukken, zie ik niet in hoe je er onderuit komt om voor elk bezocht nieuwsbericht de laatste viewdatum op te slaan.
Het kan wel, de maximale grootte van alle cookies voor één domein is 1,2mb, maar dat zou nogal wat verkeer creeeren omdat die hele cookie dan iedere keer meegestuurd moet worden van client naar server.

Doe het dan bijv. alleen voor nieuwsberichten op de frontpage en niet in het archief, mocht je daar onderscheid in maken. Delete dus de datums uit de cookie van items die niet meer recent zijn.

Een nog betere optie is voor elke bezoeker die nog geen cookie heeft, een uniek user id te genereren en die in de cookie op te slaan. Je kunt dan de bezoekgegevens naar hartelust in de database opslaan.

[ Voor 15% gewijzigd door Not Pingu op 24-04-2007 13:20 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
datum opslaan in cookie (of md5 hash oid), alle topics met reactie voor die tijd -> gelezen
alle topics die een persoon leest sla je op in een andere cookie (read cookie oid)
bij elk nieuw bezoek delete je je read cookie en update je je tijd in de andere koekje.
in een database sla je elke view op, is een view langer dan 30 minuten dan de vorige view -> nieuw bezoek.
Pagina: 1