2

我是使用 php 的新手,但我的问题是:

我正在开发一个用户可以将内容发布到服务器的网站。我正在尝试为用户发布的频率添加 5 分钟的限制。每次用户发布时,它都会使用 CURRENT_TIMESTAMP() 更新他们在数据库中的行上的一个字段

我想做的是检查他们多久前发布的,如果不到 5 分钟前,则不允许他们发布。

我认为它看起来像这样:

<?php

$query = "SELECT * FROM Users_table WHERE Username = '$username'";
$result = mysql_query($query);

if (($result['last_post']-now())<=5minutes) {

echo "Please wait 5 minutes before you can post again.";

} else {

code to let user post

}

?>

我遇到的问题是我不知道时间如何运作得很好,也不知道 5 分钟会是什么样子。

任何帮助深表感谢。

4

3 回答 3

6

除了使用数据库,您也可以使用会话:

session_start();
if (isset($_SESSION['last_post']) && $_SESSION['last_post'] + 300 >= time()) {
    echo "sorry, please wait for 5 minutes before next post";
} else {
    // do your post here
    $_SESSION['last_post'] = time();
}

它将添加一个会话变量来跟踪此会话中的最后一篇文章;每次发布值都会更新。

如果最后一次 + 5 分钟是未来,那么距离上一次发帖还不到 5 分钟。

于 2012-05-29T01:43:08.080 回答
1

您可以直接在 SQL 上检查,然后使用 PHP 来验证查询是否返回任何内容:

$query = "
    SELECT * FROM Users_table 
    WHERE Username = '$username' 
    AND DATE_ADD(last_post, INTERVAL 5 MINUTE) > NOW()
";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0) {
    echo "Please wait 5 minutes before you can post again.";
} else {
    //code to let user post
}
于 2012-05-29T01:45:06.350 回答
0

SELECT * FROM Users_table WHERE Username = ? AND DATE_ADD(last_post, INTERVAL 5 MINUTE) > NOW()

然后检查结果是否为空。

于 2012-05-29T01:46:20.140 回答