如何防止我的LIKE按钮在客户端和服务器端的垃圾邮件

时间:2013-04-24 12:38:33

标签: php javascript jquery

我在网页上的每个帖子下面都有一个“LIKE”按钮。当用户点击“LIKE”按钮时,它通过AJAX向一个like.php页面发送一个GET请求,该页面向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();
}

我的问题是,这是检查SERVER端时差的有效方法吗?如果不是哪种方式最好?

我的第二个问题,如何在不进入SERVER端的情况下在客户端执行此操作?

1 个答案:

答案 0 :(得分:0)

您无法在客户端中添加此类安全性。因为客户可以改变。如果用户真的想要向您发送垃圾邮件,他可能不会使用浏览器。

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

如果您确实希望将此安全性置于客户端,则必须使用一些javascript。