Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 如何确保用户只按一次我的like按钮?_Php_Javascript_Jquery_Validation_Session - Fatal编程技术网

Php 如何确保用户只按一次我的like按钮?

Php 如何确保用户只按一次我的like按钮?,php,javascript,jquery,validation,session,Php,Javascript,Jquery,Validation,Session,喜欢巴顿的桌子吗 LIKE_ID(每个帖子的唯一LIKE ID) 喜欢(某人单击喜欢按钮的次数) POST_ID(对应于posts表的POST_ID) 一个单独的post表具有上面的post_ID,该ID对于每个post都是唯一的 为用户存在一个单独的用户表 因此,当用户单击like按钮时,它会将+1添加到like表中,其中post_id是他们喜欢的任何帖子 javascript文件 $(document).ready(function() { $('img.like_click').cli

喜欢巴顿的桌子吗

  • LIKE_ID(每个帖子的唯一LIKE ID)
  • 喜欢(某人单击喜欢按钮的次数)
  • POST_ID(对应于posts表的POST_ID)
一个单独的post表具有上面的post_ID,该ID对于每个post都是唯一的

为用户存在一个单独的用户表

因此,当用户单击like按钮时,它会将+1添加到like表中,其中post_id是他们喜欢的任何帖子

javascript文件

$(document).ready(function() {
$('img.like_click').click(function() {
var form = $(this).closest('form[name=like_form]');
var lid = $(form).find('input[name=lid]').val();
$.post("like.php?lid='" + lid + "', function(data) {
$(form).find('span.like_count').html(data);
});
});
like.php文件

$lid = $_GET['lid'];
mysql_query("UPDATE tbl_likes SET likes=likes+1 WHERE like_id=".$lid) or     die(mysql_error());
$result = mysql_query("SELECT likes from files where fileid=" . $id) or die(mysql_error());
$row = mysql_fetch_assoc($result);
echo $row['likes'];

我不知道如何阻止用户一次又一次地喜欢它。我在网上发现了facebook风格的脚本,阻止人们这样做,但它们基于IP地址(如果你没有登录,你就不会喜欢我的帖子),这些代码让我感到困惑,因为我不是一个jquery的人。我仍在试图找出如何使用上述代码正确地显示like按钮,但最困难的部分是限制多个like,这让我感到困惑。有人能帮忙吗?谢谢

你说过,除非用户登录,否则他们不会喜欢你的帖子。所以在你的情况下,你让自己变得很容易。您只需要跟踪哪些用户喜欢哪些帖子,以防止重复

在like表中,删除
likes
列。我们稍后再计算。添加一个
user\u id
列,以便跟踪哪些用户喜欢哪些帖子。然后在
post\u id
user\u id
上添加组合的
主键
,以防止重复

然后按如下方式构造查询:

$q = mysql_query("INSERT INTO tbl_likes (user_id, post_id) VALUES ('{$user_id}', {$post_id})");

if( $q === false ) {
    // query didn't work, probably a duplicate
}
else {
    // return a success etc
}
SELECT post_id, count(*) as c FROM tbl_likes WHERE post_id = $post_id;
如果要获取喜欢的数量,请使用如下计数查询:

$q = mysql_query("INSERT INTO tbl_likes (user_id, post_id) VALUES ('{$user_id}', {$post_id})");

if( $q === false ) {
    // query didn't work, probably a duplicate
}
else {
    // return a success etc
}
SELECT post_id, count(*) as c FROM tbl_likes WHERE post_id = $post_id;

您是否跟踪每个用户已经喜欢的帖子?我看不出你描述桌子的方式。如果你这样做了,用它来检查和禁用按钮,当你需要的时候。如果没有,请尝试另一个包含
user\u id
post\u id
的表。如果用户喜欢帖子,则添加到此表。使用HiddenField。当用户单击按钮时,设置其值。稍后检查hiddenfield值是否要单击一次并刷新页面,然后可以再次单击?或者即使你刷新,也只需点击一次?
我在网上发现类似facebook风格的脚本,阻止人们这样做,但它们是基于IP地址的
我严重怀疑……它是基于用户而不是基于IP的。一旦用户点击相似的图像,你可以用“喜欢的”图像替换“喜欢的”图像吗?