如何确保用户只按一下我的喜欢按钮?

时间:2012-06-25 05:14:34

标签: php javascript jquery validation session

像Button的表

  • LIKE_ID(每个帖子的ID都很独特)
  • LIKES(有人点击按钮的次数)
  • POST_ID(对应于帖子表的POST_ID)

单独的邮局表格上面有一个POST_ID,对于每个帖子都是唯一的

用户存在单独的用户表

因此,当用户点击“赞”按钮时,它会向Like表中添加+1,其中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的家伙。我仍然试图弄清楚如何使用上面的代码正确显示类似的按钮,但最困难的部分是限制多个喜欢,这让我很难过。有人可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:1)

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

在相似的表格中,删除likes列。我们稍后会计算出来。添加user_id列,以便跟踪哪些用户喜欢哪些帖子。然后在primary_keypost_id上添加组合 user_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;