【问题标题】:How to limit user feedback? [closed]如何限制用户反馈? [关闭]
【发布时间】:2019-03-13 17:56:19
【问题描述】:

我正在尝试创建一个喜欢/不喜欢系统,用户可以在其中对视频提供反馈。该系统可以正常工作,但是用户对喜欢或不喜欢的次数没有限制。

我想过制作一张表格来检查哪个用户喜欢哪个视频。我已经有两张桌子,一张用于视频,另一张用于用户。我想知道这是否是个好主意,或者我是否有更好的方法来解决这个问题。

<?php
session_start();
include "config.php";

if(isset($_POST["submitted"])){
mysqli_query($link, "UPDATE video SET likes = likes + 1 WHERE (v_id = '$vid')");
};
?>
<br>
<form method="post">
    <input type="hidden" name="submitted">
    <button type="submit">Like</button>
</form>

下面是mySQL代码,

CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE video(
v_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
video_name VARCHAR(225) NOT NULL,
id INT NOT NULL,
FOREIGN KEY user_id(id)
REFERENCES users(id)
ON DELETE CASCADE,
n_views INT,
likes INT,
dislikes INT,
image_name VARCHAR(225) NOT NILL
);

【问题讨论】:

  • 我在您发布的内容中没有看到任何试图限制某人多次投票的内容。至少您需要知道用户 ID,然后检查您还不需要查看该 ID 是否已投票支持视频 ID 的表格。
  • 我还没有创建第三个表来检查用户 ID 和视频 ID,因为我想知道这是否是一个坏主意。曾经有人告诉我,太多的表格可能会在网站上产生问题。
  • 不知道是谁告诉你的,但它不是真的(完全)。您的附加表只需要保留用户 ID 和视频 ID,以便您可以轻松查看某人是否已经投票。这是一个二进制结果,是的,他们有或没有。
  • 只需创建另一个包含真正喜欢和不喜欢的表,然后在该表上运行您的查询,然后添加一个简单的触发器,当您对其执行 INSERT 时更新电影表的总数其他表。这样,当您执行 INSERT user (unique)、v_id (unique)、type (tiny_int, 0 = dislike, 1 = like)、comment (varchar 255) 等时,数据库将在它们已经返回时返回重复键错误评论了一部特定的电影 v_id

标签: php mysql post button


【解决方案1】:

简单的方法(可以绕过)

写一个cookie。并在投票时检查。

可靠的方式

记录用户和视频的每个喜欢/不喜欢。投票时检查是否存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2020-05-30
    • 1970-01-01
    相关资源
    最近更新 更多