我正在编写一个脚本,但它不起作用。 当用户发帖时,将插入NOW()。我想创建一个脚本,用户只能在他的最后一篇文章与他此时想要发布的帖子相差至少10分钟时发帖。我不想使用cookie,看到人们可以删除它们。
我现在有这个代码,但不知道如何继续前进。谢谢!
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";
}
}
}
答案 0 :(得分:2)
在处理时间时,如果您可以完全依赖数据库,那么它很方便。这避免了将数据库的时间概念与PHP混合在一起,PHP可能位于不同的服务器上和/或具有不同的时间配置。
所以,试着找一个在过去十分钟内制作的帖子,如果没有,你知道你很高兴
SELECT COUNT(*) AS recent_posts
FROM bloopp
WHERE email=? AND (UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(send_time))<600;
答案 1 :(得分: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替换
答案 2 :(得分: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,检查左侧联接),将日期放在会话中以及当他发布更新时等等,你知道如何这样做。
此致