我正在寻找如何在php中实现StackOverflow/reddit投票系统的示例.
基本上我想要向上和向下箭头框.那里有什么好的例子吗?
我在谈论一些像http://uservoice.com/这样的网站的东西 你能建议任何其他类似的服务,网站或者可能(甚至更好)在自己的服务器上部署的现成引擎吗?
实际上,更多关于系统的问题,可以安装在您自己的服务器上.
我需要根据用户评分对某些产品进行排序.
假设我们有3个产品{ a,b,c },我们有关于此产品的用户反馈.哪个用户给我们反馈并不重要(如果你熟悉它,这个问题不是关于相关过滤 - 用户兴趣不是这里的情况)
以下每行都是用户在尝试比较3种产品时的反馈:
一个150分 - b 0分(这个用户只是告诉我们他对2个产品a和b的看法以及a和b的比较,但是如果他给出150分然后b值0分)
得150分 - 得20分
c 200分 - 一个10分(尽管前一个这个用户认为c比a更好)
200分 - B 40分 - 100分
150分 - B 50分
150分 - B 20分
(这些评级仅仅是一个样本,在现实世界中,产品数量和评级远大于此)
现在我需要一种算法来根据用户投票查找产品的排名.在我看来,最好的方法是用相关图来描述这个问题,并将所有产品相互连接起来.
任何形式的帮助或提示表示赞赏.
/*******************************/
你不能只是加点和计算产品的点平均的原因是很重要的它是如何得到他的分假设一个已经得到了对800点b -然后Ç得到10分对一个这样的:
一个200 - b 0
一个200 - b 0
一个200 - b 0
一个200 - b 0
c 10 - a 0(这意味着c优于a)
所以肯定一个是优于b,但是用小10个Ç从有一个更好的排名 …
我是新来的,但我喜欢这个网站.我检查了其他类似的问题,但我没有看到我在寻找什么.
我是一名音乐家,而且我每天都会写一首"今日之歌",我每天都会写一首小歌.我想将这些歌曲发布在<div>里面<li>.在div中,我只想要一个简单的MP3播放器和一个"喜欢"或"不喜欢"按钮.用户可以投票,并且歌曲将<li>根据投票数量向上或向下移动.
我想用数学来保持这个简单 - 只是减去<li>数组中喜欢的不喜欢,并从最高到最低排序.
最好有一个简单的cookie系统,至少让一个人不必一次投票,但我不太关心它.
我一直在寻找一个简单的PHP或Javascript教程.有人能指出我正确的方向吗?谢谢!
我所说的潮流效应就像这样描述:
已经排名靠前的项目有更高的投票倾向,甚至可能被投票.
我希望得到的是一些具体的建议,充其量基于你对数学公式的实际经验以及它所帮助的情况.
但是,任何有用的指针都非常受欢迎!
我的排名系统
请考虑在具有信誉系统的网站上的排名系统,并且用户仅对项目进行投票,并且排名表重置为每月开始新鲜.
每个用户在每个月内每个项目都有一个upvote,并且对于在某个月内投票使该项目在该月末成为最高排名的用户有奖励.
用户被告知以下内容增加了他们的upvote的重量:
1)...在upvoting时你的声誉越多
2)...你在当前月份内投票的项目越少(包括当前的upvote)
3 )...在您自己的投票之前的当月内该项目已经拥有的投票越少
排名表每天重新计算一次,并且对所有人都可见.
目标
我想实施第3部分,以便纠正项目的行列,在这些行列中无法判断某些用户是否因为随波逐流的影响而对其进行了支持(这些用户可能希望仅通过投票他们获得"战术"优势感知很多其他用户已经投票了)
此外,我希望通过这种方式来缓解可能使用的袜子木偶设法获得一些声誉,但赞成相同的项目或项目组.
题
是否有一个(甚至可能经过测试的?)数学公式,我可以在每个项目的时间顺序的upvotes列表上应用,以获得每个这些投票的高效率,以便他们的权重将以合理的方式得到纠正?
我认为它必须是一种lograthmic功能,但我不能完全控制它...
谢谢!
编辑
扎克说:"超出一定程度的受欢迎程度,额外的投票会降低某些事物的显示概率"
为了进一步澄清:我所追求的是哪些实际数学方法值得尝试,将以数学函数的形式,以合理,平衡的方式将流行的这种减少(即,将系数应用于权重,见上文)转化. .
我希望有人在上述方法的相似或一般情况下具有这种方法的实践经验.
我想要一些伪代码或白板建议允许在我的网站上进行未经身份验证的投票.我已经查看了这个主题的相关主题,但我认为我的方案不同,足以保证自己的主题.
有3分核心的情况我想支持.
1)经过身份验证的用户"Joe Blow"登录到我的网站并投票.由于他经过身份验证,他只能投票一次.对于他所做的每一次投票,我将他的UserId存储在数据库中
2)未经身份验证的用户"Sally"访问我的网站并投票.由于她未经身份验证,我将在一个名为"Anonymous-Users-From-My-Site"的用户帐户下保存她的投票.
3)未经身份验证的用户"Zoltan"使用我构建的小部件来从托管我的小部件的其他合作伙伴网站访问我的网站.他也可以从该网站投票.我将在名为"Anonymous-Users-From-A-Partner-Site"的合作伙伴用户帐户下保存他的投票.
这里的转折是我需要支持"莎莉"和"佐尔坦"投票无限数量的能力.也许莎莉想在一天内投票500件事.也许Zoltan想在合作伙伴网站上投票200件事.也许Sally没有重新访问该网站一个月,然后回来投票更多的东西.
如何使用cookie实现方案2和3?我是否一起散列所有项目ID的投票?我有什么选择?
FWIW:我计划在统计选票时做出严格的区分.我会明确表示,匿名投票就是这样 - 匿名.在查看结果时,人们会理解使用一定程度的怀疑态度.但我仍然认为允许未经身份验证的用户投票是有价值的,即使他们可以通过使用多个浏览器来游戏系统或在每次投票后删除他们的cookie.如果用户在我的网站上投票必须至少做到这一点,那么我会满意的.
最后:我对使用像EverCookie这样的东西不感兴趣.根据我的需要,这是完全矫枉过正的.
我有以下表格:
post (id, title, content) etc
author (id, username) etc
author_vote (post_id, author_id, value)
Run Code Online (Sandbox Code Playgroud)
值是tiny_int,可以是1或-1.
我想计算每个帖子的正面和负面投票数:
$posts = sql_select($link, "SELECT post.*, author.username
FROM post, author
AND author.id = post.author_id");
Run Code Online (Sandbox Code Playgroud)
为什么以下代码不起作用?
array_walk($posts, function(&$post, $link){
$post['positive'] = sql_select($link, "SELECT SUM(value) FROM author_vote WHERE post_id = $post['id']
AND value = 1");
$post['negative'] = abs(sql_select($link, "SELECT SUM(value) FROM author_vote WHERE post_id = $post['id']
AND value = -1"));
});
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下内容,这导致每个帖子的所有投票都相同:
foreach ($posts as &$post)
{
$id = $post['id'];
$post['positive'] = (int)sql_select($link, "SELECT SUM(value) FROM author_vote …Run Code Online (Sandbox Code Playgroud) 用一个有效的例子描述我的问题是最简单的:即使你没有登录,YouTube也会记住你看过的内容,下次根据以前看过的电影给你建议.
我的网站在某种程度上类似:用户可以在不登录的情况下对文章进行投票,并且网站会记住使用Cookie的投票.我已经找到了一种工作方法,但必须有一种更简单的方法 - 现在数据库的使用还不过是优化的.
对于每位访客,都会检查他是否有饼干.如果是,我查询他的投票.如果不是,我创建一个虚拟用户,并将他发送出去.现在我将此用户存储为"last_visit"时间戳.在此之后,两个用户的一切都是相同的.我的问题是我的数据库填满了虚拟用户,所以我让我的cookie在3个月后到期,我的网站定期检查哪些用户在过去3个月内没有访问我的网站,并从数据库中删除它们.
我知道我过于复杂了,但我的投票系统正在使用AJAX,我找不到一种方法来发送一个cookie(并创建虚拟用户)只有在投票发生时而不是每次简单的访问者浏览我的网站时 - 没有投票.
还有一个注意事项:我坚持使用cookies - 我知道在投票时更容易存储IP-s,但是有学校,企业使用相同的IP,我喜欢让用户使用我的网站.
我在这里想念的是什么?如何优化?
我希望制作一个无法追踪的投票系统,允许注册用户以某种方式对一些敏感问题进行投票,这样就无法在数据库受到损害的情况下追踪投票给用户(包括被过于好奇的数据库"妥协"管理员).
详细设置:
我有一些解决方案,我在宽限期后作为我自己的答案发布.
有没有办法让一个合理安全的系统投票而无需登录.我现在使用cookie来设置此人是否已投票,并在数据库中插入用户IP.
如果该用户删除了他的cookie,他将能够再次投票.这就是我检查用户的ip是否存在于数据库中以及该IP是否在过去30秒内投票的原因.这样他就不得不删除他的cookie并更改他的IP地址再次投票.
我知道没有100%的防故障解决方案,但是有更安全的方法吗?