maybe if you create an extra table like you were saying, which a row for each user. Which is created when a new user registers, it creates the row in the user table and in the user_log table or whatever you want to call it.
Then you or I invision it being something like, adding to a field.. everytime they view a thread or however you want to make it, it gets added to that filed (threads_viewed).. which will hmm.. be interesting to say the least, like an if .. blank, add on, if not blank add a comma then the next number..
then when you want to extract to do whatever you want to do, you will have to use explode() function to show what threads the user viewed.
I am not the best with the explode function, which I would like someone to explain to me how it works... and maybe I can better help answer this.. by playing with it myself, since I am making my own forums
$forums_viewed = "1,2,3,6,8,9";
.. how do you get the output to do what you want when you use..
$dosomething = explode($forums_viewed);
is it like :
$dosomething[1] = "1";
... blah blah.?
I was also trying to come up with a clever if not efficient, or heck just a way to be able to display what new topics so and so has not viewed since their last visit, then I can go on from there with what old posts have been updated since last been viewed.