php - 像系统在 PHP
问题描述
嘿,我想在 php 中创建类似的系统,但我遇到了一些问题......
如何创建每个用户只允许一个赞的系统?
这是我的代码
<?php
if(isset($_POST['like'])){
$q = "SELECT * FROM likes WHERE `username` = '".$_SESSION['recieveruser']."'";
$r = mysqli_query($con, $q);
$count = mysqli_num_rows($r);
if ($count == "0") {
$q1 = "INSERT INTO likes (`username`, `likecount`)VALUES('".$_SESSION['recieveruser']."', '1')";
$result1 = mysqli_query($con, $q1);
} else {
while($row = mysqli_fetch_array($r)) {
$liked = $row['likecount'];
}
$likeus = ++$liked;
$q2 = "UPDATE likes SET likecount='".$likeus."' WHERE username = '".$_SESSION['recieveruser']."'";
$result2 = mysqli_query($con, $q2);
}
}
给我一些建议
- 我只希望每个用户喜欢一个
在这段代码中,每个用户都可以给另一个用户点赞,但我只希望每个用户一个点赞,如果可能的话,我想显示点赞的用户的名字
这只是用户喜欢的代码......
解决方案
您不应该使用上面发布的代码。首先,您的代码容易受到 SQL 注入的攻击,因此您应该使用准备好的语句(https://www.php.net/manual/de/mysqli.quickstart.prepared-statements.php)。其次, $_SESSION 变量被贬低(https://www.php.net/manual/en/reserved.variables.session.php)。
假设您希望用户只能喜欢一次帖子。然后,likecount
您需要一个post-id
唯一标识帖子的列,而不是列。将组合post-id
和定义username
为数据库中的主键。
现在你的代码只需要检查你是否在表中找到username
了。post-id
likes
如果您没有在表中找到username
与post-id
INSERT
username
post-id
推荐阅读
- elasticsearch - Elasticsearch 中的字符串查询返回没有查询字段的值
- django - 使用 Django Restframework 和 Mongodb 进行多嵌套
- reactjs - React formik 验证Schema conditionalValidation
- testing - 我在服务器上的 jmeter 中得到 java.net.unknownhostexception
- javascript - JsViews / JsRender 使用 GroupBy 属性/属性渲染表格
- python - 使用python 3中的结构元素选择数组中的像素
- ios - 未找到请求的实体 FCM iOS React Native
- javascript - 如何在不使用 NodeJS 加载页面的情况下发送 POST 请求并获取响应
- python - 在 try except 块中附加 None 值
- node.js - 节点模块更新后 Gulp 不起作用