8

公司要做一个匿名点赞的功能,用户可以不用登陆就点赞,但是只能点赞一次,用COOKIE和ip 都不是太合理,不知道谁有更好的方案,很好奇百度知道的点赞功能是怎么记住用户的

smartfw 122
2017-08-15 提问
15 个回答
6

已采纳

md5(IP+操作系统类型+浏览器类型+浏览器版本号) 联合唯一

4

应该是只能做到 User-Agent + IP 联合唯一。
这种方式的缺点就是:使用同一个出口IP、使用同样终端设备/浏览器 的多个用户,只能点赞一次了。

0

匿名点赞的意思, 用户登录以后, 点赞的时候, 不显示用户名吧.

这种不登录, 没有好的唯一方案.

0

锁IP?或者 如果是APP 或者软件之类的 锁mac码,一样的

0

不登录还要记住用户名?开玩笑么。。记住用户名肯定是登陆了的,不登录点赞并且只能点赞一次那你就只能去记录用户的地址、设备等信息,如果你能获取到的话,否则不登录要能点赞还只能点一次基本是不可能的

0

不登录无法防止重复点赞,这样很容易被刷赞

0

你弄个假的,点击后你就在localstore加一个数据,里面包含这个内容的id,然后这条内容他无法点赞了,唯一问题就是用户清掉数据就失效了

0

不登录点赞的话就是获取不到哪个用户了,所以也只有通过获取用户IP。
按我理解上是点赞又不能重复点赞的话也只能这么操作,因为你无法识别是哪个用户。

0

要么,精确到一台设备,要么精确到一个ip! 要不然你怎么知道用户的唯一性

0

问题被踩了4次也是心疼,很多人根本没理解楼主的意思就胡乱评论,
@clcx_1315, 人家说的是“好奇百度知道的点赞功能是怎么记住用户的”,你扯什么用户名,用户等于用户名吗?登录的用户等于用户吗?
这里的重点不是获取用户,是尽量保证用户点赞的唯一性。
比较赞同@和女神嗯嗯_丶和@lejoy的思路,用UA信息+ip的形式尽量保证一个用户点赞一次,但是这样我换个浏览器就能继续点赞了,如果不用登陆的话,只需要尽量保证就好了、前端控制终究达不到100%的效果。

0

可以用本地存储,localstorage+内容id为key,0,1为val

0

使用session回话保持,本地sessionid 回传,可以跨浏览器保证用户唯一

0

感谢各位大神的参与,起初我能想到的只是ip+cookie,感谢@和女神嗯嗯_丶 和 @lejoy 的回答,对我很有帮助

0

百度知道
未登录:
点击点赞之后,存储到localstorage之中,然后在登陆之后,数据同步到用户
已登录:
直接同步到用户,但是localstorage还是会存一份

0

百度知道pcweb端 应该是通过cookie中的BAIDUID来控制未登录状态点赞的。
BAIDUID的生成算法,其他朋友也回答的差不多了。就是那几个方法。
一段时间内,首次访问百度知道或者说是百度系的网站,无论登不登陆,cookie中都会写入BAIDUID。如果不清除cookie,它会保持一段时间内不变。这样,在一定时间内,你只能对点赞进行一次操作。但当cookie失效,则又可以重新点赞。所以你可以试一下,不登录点赞后,清除cookie,又可以在百度知道上刚刚点过赞的条目上继续点赞了。
另外,我觉得BAIDUID生成算法中,应该是加了timestamp或者随机数,因为使用同一IP同一机器同一浏览器,每次清cookie后,生成的BAIDUID值是不一样的。
最后,不登录就可以点赞的话,确实这个赞的数据,可参考性很差。不过用户发现能刷赞数的话,也许会增加访问此网站的兴趣,有利有弊,用哪种策略还得看PM。

撰写答案

推广链接