1

我在网页上的每个帖子下都有一个“LIKE”按钮。当用户单击“LIKE”按钮时,它会通过 AJAX 将 GET 请求发送到 like.php 页面,该页面将一行插入 mysql 数据库表。用户点击 LIKE 按钮后,LIKE 按钮消失。

我想确保用户点击“LIKE”按钮之间应该有 3 秒的延迟。我的意思是,如果用户单击帖子上的“LIKE”按钮并立即单击第二个帖子上的 LIKE 按钮,并且如果此时间少于 3 秒,则应该拒绝 LIKE 按钮过程。

现在,问题是我应该把这张支票放在哪里,在客户端还是在服务器端。如果一个服务器端,我想到了一个解决方案。

我想把这段代码放到like.php页面

if(isset($_SESSION["last_like_time"]))
{
    $last_like_time = $_SESSION["last_like_time"];
    $time_diff = time()-$last_like_time;
    if($time_diff<3)
    {
        die("ERROR: You must wait at least " . (3 - $time_diff) . " seconds to Like another Post");
    }
    $_SESSION["last_like_time"] = time();
}
else
{
    $_SESSION["last_like_time"] = time();
}

我的问题是,这是检查服务器端时差的有效方法吗?如果不是哪个是最好的方法?

我的第二个问题,如何在不去服务器端的情况下在客户端执行此操作?

4

1 回答 1

0

您不能在客户端中放置这样的安全性。因为客户可以改变。如果用户真的想向您发送垃圾邮件,他可能不会使用浏览器。

在使用 php 的服务器端,time()可以检查当前用户的最后一个“赞”操作。

如果你真的想把这种安全性放在客户端,你必须使用一些 javascript。

于 2013-04-24T12:46:17.467 回答