2

我正在编写一个脚本,但它不起作用。当用户发帖时,将插入 NOW()。我想制作一个脚本,用户只能在他的最后一篇帖子与他此时想要发布的帖子至少相差 10 分钟时才能发布帖子。我不想使用cookies,看到人们可以删除它们。

我现在有这段代码,但不知道如何继续。谢谢!

if ($db_found) {
    $sql1="SELECT send_time FROM bloopp WHERE email='$email' ORDER BY id DESC LIMIT 1";
    while($row = mysqli_fetch_array($result)) {
        $last_post = $row['send_time'];
    }
    if ($last_post + 600 >= NOW() {
        sql2 = "INSERT INTO bloopp (bloopp, browser, medium, send_time, email) VALUES
           ('$bloopp', '$browser', 'desktop', NOW(), '$email')";
        $result = mysql_query($sql);
        if($result) {
            header('Location: index.php');
        }
        else {
            echo "ERROR";
        }
    }
}
4

3 回答 3

2

在处理时间时,如果您可以完全依赖数据库,那将非常方便。这避免了将数据库的时间概念与 PHP 混淆,后者可能位于不同的服务器上和/或具有不同的时间配置。

所以,试着找到最近十分钟内发布的帖子,如果没有,你就知道你很高兴

SELECT COUNT(*) AS recent_posts
FROM bloopp 
WHERE email=? AND (UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(send_time))<600;
于 2013-09-29T10:12:10.720 回答
0

在您的查询中:

 sql2 = "INSERT INTO bloopp (bloopp, browser, medium, send_time, email) VALUES ('$bloopp', '$browser',    'desktop', NOW(), '$email')";
 $result = mysql_query($sql);

不应该是这样

 $sql = "INSERT INTO bloopp (bloopp, browser, medium, send_time, email) VALUES ('$bloopp', '$browser',    'desktop', NOW(), '$email')";

注意 sql2 / $sql 替换

于 2013-09-29T10:11:52.177 回答
0

假设您有表用户

user_table:
id
email

bloop:
email
browser 
....

Select * from user_table left join ( select max(send_time),email from bloop where email=$email ) max_sel on max_sel.email = user_table.email...

这样的事情会让用户获得他的最新帖子(或者对于没有帖子的新用户为 null,检查 put left joins),将日期放在会话中,当他发布时更新它等等,你知道怎么做.

问候

于 2013-09-29T10:17:06.897 回答