【问题标题】:Feedback system only allow 1 per user反馈系统每个用户只允许 1 个
【发布时间】:2014-06-17 00:42:23
【问题描述】:

我正在网站上实施反馈系统,但用户只能向其他用户提供一次反馈。

我能想到的唯一方法是创建另一个数据库,通过跟踪 id 显示谁留下了谁的反馈,但我确信有一种更简单的方法可以实现相同的结果,我只是没有看到它?还是我最初计划的将信息放入另一个数据库的方式是最好的解决方案?

我目前的代码是:

<?php
    if(isset($_POST['good'])) {

        $thumbsUp = mysql_query("UPDATE users SET good_feedback = '". $newGood1 ."' WHERE `username` = '". $profileUser ."'");

    if($thumbsUp) {
            echo 'You have left feedback';
        }
    }
    if(isset($_POST['bad'])) {

        $thumbsUp = mysql_query("UPDATE users SET bad_feedback = '". $newGood2 ."' WHERE `username` = '". $profileUser ."'");

    if($thumbsDown) {
        echo 'You have left bad feedback';
        }
    }

    if (logged_in() == true && $user_data['username'] != $profile_data['username']) {
        echo '<p style="font-size: 17px; margin-left: 22%;">Leave Feedback: </p>';
        echo '<form method="post" style="margin-left: 8%;">
            <button class="btn-u" name="good">Good Feedback</button>
            <button class="btn-u" name="bad">Bad Feedback</button>
            </form>';

    } else {
        echo 'you cannot leave feedback for yourself!';
    }

?>

提前感谢您的任何回答。

请注意:我知道上面的代码对 SQL 注入是开放的

【问题讨论】:

  • 警告您的代码极易受到 sql 注入攻击!
  • @DanielA.White 谢谢

标签: php mysql


【解决方案1】:

如果您想设置一个环境,限制“A”只能向“B”提供一次反馈,那么您可以使用唯一索引来执行此操作。以下是您可以执行的非常简化的操作:

create table feedback (
    FromUser int,
    ToUser int,
    Message varchar(255)
);

create unique index idx_feedback_from_to on feedback(fromuser, touser);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 2014-10-11
    • 2015-11-03
    相关资源
    最近更新 更多