日期:2014-05-17  浏览次数:20446 次

怎么限制每个用户只能“顶一下”文章?
我现在要实现一个功能

就是每篇新闻都有"顶一下"跟"踩一下"

每个登陆的用户,"顶一下"只能操作一次,"踩一下"也只能操作一次

我怎么实现呢?

把对应的新闻ID跟用户存在一个表里?然后每次判断一下有没有?

那这得存多少数据阿 郁闷了!

------解决方案--------------------

如果是匿名的我是通过记录IP来搞的

注册用的话直接记录用户ID就可以了啊


------解决方案--------------------
存储到数据库中,压力不会你是想象中的那么大吧。

10W个用户,100W新闻,其实不是每个新闻都有那么多人去看的。
------解决方案--------------------
那匿名的用户就不要让他看到顶这个按钮,或者就是这个按钮不可用。登陆的用户嘛那就可以在数据库中记录一下
------解决方案--------------------
数据库中没有记录是不可能的吧;
我想还是建张表吧,数据库中没有记录无法实现长期保存啊
HTML code

   ID        新闻ID    用户ID
20090301      1         1

------解决方案--------------------
探讨
只有登陆的用户才能顶啊 匿名不能顶阿

我现在不知道怎么办的是 那么多用户 那么多新闻 那数据量多大阿

------解决方案--------------------
是每天顶一下,还是永久的只能顶一下呀?
如果是每天顶一下,我觉得用cookie比较好点吧。
------解决方案--------------------
注册用户有多少啊?10w?,建议存数据库
------解决方案--------------------
顶一下的关联 保存数据库好了 这样数据以后还可以进行行为分析
绝对不用担心数据库 现在的数据库性能 比我们想象的强多了 呵呵
------解决方案--------------------
存数据库,再做判断
------解决方案--------------------
在Session里面保存一个顶的列表和一个踩的列表,每次顶或踩的时候判断该列表里面是否存在该新闻ID
------解决方案--------------------
sohu新闻就是用js限制你别点击那么快,谁点击两下,提醒你,估计你就不点击了。

用ip也行

你去看看sohu新闻,看看源代码,看他怎么做的。
------解决方案--------------------


如果是匿名的我是通过记录IP来搞的 

注册用的话直接记录用户ID就可以了啊 


这样挺好的
------解决方案--------------------
这个嘛,检测IP 检测cookie,检测session,你想怎么办就怎么办.
------解决方案--------------------
通过IP或者数据库就行了
------解决方案--------------------
是每天顶一下,还是永久的只能顶一下呀? 
如果是每天顶一下,我觉得用cookie比较好点吧。
如果是只顶一下 则可以用数据库保存
------解决方案--------------------
sql="select * from textfile where 顶一下=1 and 文章ID=? and userid='"+Session["userid"].ToString()

int i =sqlcmd(sql)

if (i==1){

reponse.write("你不能再顶了")
}
else{


}
------解决方案--------------------
可以把“最新的和热门”的新闻与顶一下的关系保存到内存做缓存,缓存里面查不到再查数据库。
------解决方案--------------------
如果有1W个用户和1W条新闻 如果用数据库存的话 就可能有1W*1W*2条数据?
我觉得还是用cookie保存信息
------解决方案--------------------
放数据库吧,等你真有1w注册用户自然就会有相应的设备解决问题,拥有索引的表即使查询千万级的数据也很快的
------解决方案--------------------
放数据库吧,它不是你想像中 的那么脆弱的.........