php - 阻止用户多次点赞帖子
问题描述
我有一个喜欢按钮,它允许用户喜欢我网站上的帖子。如果用户喜欢他们之前不喜欢的帖子,它将 +1,如果他们再次按下相同的喜欢按钮,它将 -1。这适用于我笔记本电脑上的虚拟服务器。但是,相同的代码在我的实时站点上不起作用。在我的实时网站上,用户可以多次喜欢同一个帖子,这不是我想要的。我正在使用 JQuery Ajax 调用来触发一些 MySQL 代码的 PHP 文件。
任何人都可以看到下面的 PHP 有什么明显错误吗?
include ("../con/config.php");
$postid = $_POST['postid'];
$userid = $_POST['userid'];
$query = $con->prepare("SELECT COUNT(*) AS CntPost FROM Likes WHERE UserID = ? AND PostID = ?");
$query->bind_param('ss',$userid,$postid);
$query->execute();
$result = $query->get_result();
$fetchdata = $result->fetch_assoc();
$count = $fetchdata['CntPost'];
if($count == 0){
$stmt = $con->prepare("INSERT INTO Likes(UserID,PostID) VALUES(?,?)");
$stmt->bind_param("ss", $userid, $postid);
$stmt->execute();
} else {
$stmt = $con->prepare("DELETE FROM Likes WHERE UserID = ? AND PostID = ?");
$stmt->bind_param("ss", $userid, $postid);
$stmt->execute();
}
// count numbers of likes in post
$query = $con->prepare("SELECT COUNT(*) AS CntLike FROM Likes WHERE PostID = ?");
$query->bind_param('s', $postid);
$query->execute();
$result = $query->get_result();
$fetchlikes = $result->fetch_assoc();
$totalLikes = $fetchlikes['CntLike'];
$return_arr = array("likes"=>$totalLikes,"type"=>$count);
echo json_encode($return_arr);
解决方案
设法解决它。问题在于 UserID 的 MySQL 数据库列本身。该列的字符数不够长,并且截断了我使用 sessionID 填充的 UserID。我修改了数据库中的这个字段以允许 sessionID 的长度。
推荐阅读
- android - 在 Exoplayer 中播放加密音频的问题
- angular - 角度测试因詹金斯上的未知属性而失败,但在本地工作
- angular - 带断线的 Mat-cell?
- android - 我们在哪里可以找到 crosscall-x3 的模拟器?
- java - Java相关问题类名末尾的<>是什么类型的声明
- java - onFocusChange 事件未按预期工作
- react-native - 为什么我在 react native 中添加 unimodules 时收到控制台警告和错误?
- java - 递归列出所有匹配正则表达式的文件
- android - 如何在从 Json 获取数据到 android 应用程序时删除标签/特殊字母?
- python - 试图找出名字长度最短的名字