Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何阻止人们在网页上两次竖起大拇指_Php_Javascript_Html_Sql_Ajax - Fatal编程技术网

Php 如何阻止人们在网页上两次竖起大拇指

Php 如何阻止人们在网页上两次竖起大拇指,php,javascript,html,sql,ajax,Php,Javascript,Html,Sql,Ajax,我正在制作一个网站,这是一个新闻/博客类的网站,人们可以在这里对发表的文章发表评论。然后,登录的用户可以向上或向下给出评论。在我单击拇指的那一刻,它工作正常,它使用ajax将计数添加到数据库并更新数字,它还阻止用户再次单击拇指,但如果按f5刷新页面,则可以再次单击拇指。我怎样才能阻止这种事情发生? 将其添加到数据库是我一直在考虑的一个选项,但该网站需要能够处理大量的评论,用户可能会对评论做出数千个大拇指,因为这是一个简单的操作,在短时间内执行数据库表将是巨大的,这肯定会减慢页面加载,因为它将查询

我正在制作一个网站,这是一个新闻/博客类的网站,人们可以在这里对发表的文章发表评论。然后,登录的用户可以向上或向下给出评论。在我单击拇指的那一刻,它工作正常,它使用ajax将计数添加到数据库并更新数字,它还阻止用户再次单击拇指,但如果按f5刷新页面,则可以再次单击拇指。我怎样才能阻止这种事情发生? 将其添加到数据库是我一直在考虑的一个选项,但该网站需要能够处理大量的评论,用户可能会对评论做出数千个大拇指,因为这是一个简单的操作,在短时间内执行数据库表将是巨大的,这肯定会减慢页面加载,因为它将查询每次查看带有注释的页面时,都会出现一个非常长的表


目前,我在注释表中记录上下拇指的数量,以便它查询注释表并显示数字。如果有人竖起大拇指,你是否建议我添加一个包含userid和commentid的新表,以便我可以查询该表,如果有一行userid==登录用户,commentid==注释不允许?如果是这样的话,这就是我的想法,但正如我上面所说的,这将导致一个庞大的表格,肯定会减慢页面加载的速度。一种方法是加载评论,如果用户已经对每个评论进行了投票,也会加载评论,如果该用户已投票,则禁用向上拇指按钮。

您不应将单击存储为简单计数器,而应存储实际事件

创建一个名为“clicklog”的单独表格或其他内容,并添加诸如
userid
commentid
IsThumbsUp
等字段。然后在ajax页面中,您可以将拇指向上添加到此表中(
IsThumbsUp
是布尔值。拇指向上为True,拇指向下为false

然后,不要使用类似
SELECT comment、thumbsUp、thumbsDown之类的东西,您可以使用

SELECT id, comment,
       (SELECT count(commentid) FROM clicklog WHERE commentID=id AND IsThumbsUp=1) AS thumbsUp,
       (SELECT count(commentid) FROM clicklog WHERE commentID=id AND IsThumbsUp=0) AS thumbsDown
FROM comments
此外,在AJAX页面中,您还可以检查用户以前是否投票过。如果他投票过,请不要允许。或者更好。当他投票赞成时,他可以将其更改为投票反对(将IsThumbsUp从1更改为0),反之亦然

只需确保每个用户只有一个带有commentid和userid的连接


还要确保在clicklog中的字段上放置索引以快速获取信息。我会将主键放在
commentid
userid
组合上,然后在
commentid
IsThumbsUp
组合上放置单独的索引,以保留您正在使用的
计数,但也会存储执行此操作的用户他
竖起大拇指
,并确保不允许第二次。这是一种验证,竖起大拇指/向下大拇指时,您必须检查此用户是否已经投票,并相应地采取下一步…竖起大拇指!!!!!!!!!是的,您需要将其添加到数据库中。如果不存储信息,您无法跟踪发生的事实!你已经允许在网站上发表评论。想想看,发表评论所需的空间比竖起大拇指所需的空间要大得多。是的,你的数据库可能会变大,但解决方案是拥有一个设计良好、功能强大的数据库,足以支持你的网站!如果你只需要存储一个
评论id
用户id
竖起大拇指。您所要做的就是检查
用户id
是否已在该表中,以查看该
注释id
是否已存在…如果是,请不要允许他们如果您不想扩展数据库,您可以将该信息保留在cookie中-这不是很好(因为用户可以删除cookie),而是一个快速的解决方案