首页 > 解决方案 > 像系统在 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);
    }
}

给我一些建议

在这段代码中,每个用户都可以给另一个用户点赞,但我只希望每个用户一个点赞,如果可能的话,我想显示点赞的用户的名字

这只是用户喜欢的代码......

标签: phpmysql

解决方案


您不应该使用上面发布的代码。首先,您的代码容易受到 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-idlikes

如果您没有在表中找到usernamepost-idINSERTusernamepost-id


推荐阅读