Toon posts:

[PHP] Forum.Welke post wel/niet gezien? *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey mensen,
Kben bezig met het ontwikkelen van een forum, tis bijna klaar alleen nu ben ik aan het klungelen met de posts die iemand wel en niet heeft gezien...

Ik heb twee manieren en volgens mij is geen een van deze twee volmaakt..

Manier 1
Elke keer als een gebruiker een thread leest wordt zijn lastvisit cookie op time() gezet.. Zo werken volgens mij veel forum maar het is niet volmaakt. WANT als iemand zen cookie nu bijvoorbeeld op 120 staat wil dit niet zeggen dat alle posts tot unix_time 120 allemaal door hem gelezen zijn en DUS mogen niet al deze posts gemarkeerd worden als gelezen...

Manier 2
De cookie lastvisit bevat meerdere waarden..
lastvisit[time] = time() van laatste visit
lastvisit[seentill] = tot welk postid (geen threadid) heeft de gebruiker gelezen. EN
lastvisit[notseen] = als de teller van seentill op 20 staat kan het goed zijn dat de gebruiker alles tot 20 heeft gelezen alleen post 9,10,11,13 niet deze waarden zullen daarom in deze array worden geplant...


Manier 1 wekr volgens mij voor geen meter... Manier 2 maakt een te grote cookie ben ik bang... Iemand nog meer ideen ? Ik kan bijvoorbeeld manier 2 toepassen en ze gegevens opslaan in een tabel. Maarja.. heb je iedeen? SHOOT.

Al vast bedankt.

  • MrBrown
  • Registratie: Augustus 2000
  • Laatst online: 11-06 15:51

MrBrown

Reservoir Dog

Belangrijk detail.. Zijn je users altijd ingelogd of kunnen ze ook anonymous de threads lezen?

Powered by Manetti (compiled by Jura)


Verwijderd

Topicstarter
Ze hoeven niet ingelogd te zijn.... :(

Verwijderd

Topicstarter
damn een typo in de titel van de thread
str_replace("foum","Forum",$titel); :P

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Ik doe het zo:

Ik zet 2 koekjes:

1. Is een koekie met een time van 0, verdwijnt dus als de browser wordt afgesloten.
2. Is een koekje met de lastvisit tijd.

Nu is het zo: Als koekje 1 niet bestaat wordt daarin koekje 2 gezet.

Koekje 2 wordt altijd geupdate met de tijd.

Bestaat koekje 1 wel, dan wordt daaruit de lastvisit tijd uitgelezen, zo niet (nieuwe visit), dan wordt hij dus uit koekje 2 gehaald en wordt koekje 1 gezet.

  • MrBrown
  • Registratie: Augustus 2000
  • Laatst online: 11-06 15:51

MrBrown

Reservoir Dog

Mmm, waar je dan aan zou kunnen denken is om in een cookie een id te zetten en dan inderdaad in een aparte tabel welke id's welke posts hebben gelezen.Bestaat dan alleen de kans dat die tabel flink vol gaat lopen natuurlijk, maar dat kan je weer oplossen door er vanuit te gaan dat na bijv. 7 dagen de topics wel gelezen zijn. Lijkt mij het makkelijkst op die manier, kan je gewoon in de query bekijken of de post gelezen is, is mijn inziens toch wel het snelst..

Powered by Manetti (compiled by Jura)


Verwijderd

Topicstarter
En met welke van de twee kan ik nu bepalen ofdat het een nieuwe is ?

Moet ik alle posts pakken > koekje1 en < koekje2?

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Je moet voor het uitlezen koekje 1 gebruiken. Die is tenslotte tijdelijk, per browsersessie. Je doet gewoon:

if (datum_post < datum_cookie){
post is oud
}
else
{
post is nieuw
}

Verwijderd

Topicstarter
Werkt volgens mij niet echt, want als je je cookie1 update met een nieuwe datum dan betekent dat niet dat je alle posts tot die datum hebt gehad.. of wel ??

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Nee, maar als je elke geziene post wil bijhouden, krijg je een tabel, nou laten we het daar maar niet over hebben.

Neem bv. GoT.

30000 users en een heleboel posts per dag. Dan zou je dus 30000*heleboel posts*aantal dagen dat je wil bijhouden = heleboel moeten bijhouden.

[edit]
Dit systeem is kwa werking gelijk als het systeem op GoT.

Verwijderd

Topicstarter
maar hoe doet Vbulletin dat dan ? want die houden dat op 1 of andere manier wel bij. en een tabel met 30000 gebruikers = 30000 tupels

  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Ik weet het niet, mijn forum projectje staat eventjes stil.... Dusse... Misschien dat iemand anders het weer.

Verwijderd

Op maandag 24 september 2001 20:21 schreef GDOG het volgende:
maar hoe doet Vbulletin dat dan ? want die houden dat op 1 of andere manier wel bij. en een tabel met 30000 gebruikers = 30000 tupels
Ik gebruik zoiets (iets dergelijks in vBulletin)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
if (isset($bblastvisit))
   {
      if(!isset($bblastactivity))
         $bblastactivity=time();
      if((time()-$bblastactivity) > $cookietimeout)
      {
         setcookie("bblastvisit",$bblastactivity,mktime(0,0,0,0,0,2048),"/");
         $bblastvisit=$bblastactivity;
      }
   }
   else
   {
      setcookie("bblastvisit",time(),mktime(0,0,0,0,0,2048),"/");
      $bblastvisit=time();
   }
   setcookie("bblastactivity",time(),mktime(0,0,0,0,0,2048),"/");
?>

Je kan nu wat doen met die $bblastvisit, wees creatief zou ik zeggen ;)

Verwijderd

Topicstarter
Thanks mates.

  • Speedener
  • Registratie: September 2000
  • Laatst online: 13-09 15:56
ik ben dit ff aant lezen omdat ikook met een forum aant klooien ben, maar ik vraag me af wanneer je het cookie moet laten zetten, want als je dat de hele tijd doet is het cookie bijna altijd nieuwer dan de posts.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

str_replace("foum","Forum",$titel);
Executed in 0.0001 seconds.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • MikeN
  • Registratie: April 2001
  • Laatst online: 13-09 17:41
Op donderdag 28 februari 2002 17:04 schreef speedener het volgende:
ik ben dit ff aant lezen omdat ikook met een forum aant klooien ben, maar ik vraag me af wanneer je het cookie moet laten zetten, want als je dat de hele tijd doet is het cookie bijna altijd nieuwer dan de posts.
Cookie alleen setten als er nog geen een is.
Beetje ouwe koe, maar dat boeit niet echt.

Verwijderd

Op donderdag 28 februari 2002 21:41 schreef dusty het volgende:

[..]

Executed in 0.0001 seconds.
offtopic:
Dusty, ben jij lite-mod? is dit nieuw, heb ik alzheimer? is dit een gevolg van de topic van wasigh?
[slijm]iig weer een goede lite erbij :P[/slijm]


ik zou niet moeilijk doen, maar gewoon de laatste visit tijd met de laatste posts bekijken, anders krijg je of een te grote database, of te veel controleer werk of... najah, er zijn 100 mogelijkheden...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

jurriebur:
offtopic:
Dusty, ben jij lite-mod? is dit nieuw, heb ik alzheimer? is dit een gevolg van de topic van wasigh?
[slijm]iig weer een goede lite erbij :P[/slijm]
offtopic:
[topic=391334/1/25]

;)

Doet iets met Cloud (MS/IBM)


  • Speedener
  • Registratie: September 2000
  • Laatst online: 13-09 15:56
Op donderdag 28 februari 2002 21:44 schreef MikeN het volgende:

[..]

Cookie alleen setten als er nog geen een is.
Beetje ouwe koe, maar dat boeit niet echt.
ok dat is wel handig jah, maar dan nog, dan als de mensen de volgende keer komen dan zet hij ook geen cookie omdat hij nog bestaat. of zie ik dat verkeerd?

  • Grum
  • Registratie: Juni 2001
  • Niet online
dat zie je fout want op de laatste regel staat
PHP:
1
<?setcookie("bblastactivity",time(),mktime(0,0,0,0,0,2048),"/");?>

Verwijderd

Topicstarter
Omg wat een oud topic.. dit is lang geleden. ik ben al met dat project gestopt, maar thanks voor de kick ff oude herinneringen ophalen
Pagina: 1