php - 防止访问者每天发布超过 2 个帖子的方法(PHP MySQL)

标签 php mysql sql timer limit

我花了好几个小时寻找解决方案,要么我找不到合适的词来描述我在搜索引擎中的需求,要么就是我不擅长找东西。

情况是这样的: 我目前正在制作一个网站,我有一个部分,访问者可以在其中发布消息,有点像“留言簿”。但是,我想将一个 IP 地址限制为每天 2 个帖子。一开始我认为这很容易,只需将 IP 地址、日期和时间以及所有其他数据插入 mysql 表,然后比较每个 ip 的时间和日期。诸如此类……然后,当我着手处理它时,脑海中浮现出很多问题。如果 IP 在几天内发布了超过 2 条消息,我将如何比较这些条目?您甚至如何开始准确比较日期和时间?用于比较的最佳时间和日期格式是什么?有没有更好的方法,例如可以比较的自动过期数据?等等.. 对不起,如果这看起来像一个简单的任务,但我很难找到答案。尝试用谷歌搜索所有内容,例如“mysql php 时间限制”、“php mysql 防止垃圾邮件计时器”、“php mysql 计时器如 megavideo”等。

澄清一下,我需要一个好的方法来防止访问者每天发布超过 2 条消息。这是一种“留言簿”,任何访问者都可以张贴。没有登录。

提前致谢!

最佳答案

创建一个名为 exceptions 的表,结构为 id, ip, date

当用户发布内容时,执行如下查询:

$ip = $_SERVER['REMOTE_ADDR'];
$query = "insert into exceptions set ip = '{$ip}',date = 'NOW()'";

在让用户发布内容之前添加:

$ip = $_SERVER['REMOTE_ADDR'];
$count = mysql_num_rows(mysql_query("select count(*) 
         from exceptions where ip = '{$ip}' 
         and date > DATE_SUB(NOW(), INTERVAL 24 HOUR)"));

if($count> 2) { 
  echo 'You have exceeded posting limits, please try again in 24 hours';
  exit; 
}

关于php - 防止访问者每天发布超过 2 个帖子的方法(PHP MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5816804/

相关文章:

mysql - 执行此查询的正确方法

sql - 生成HierarchyID

php - 检查登录脚本是否允许访客进入?

php - 使用mysqli登录系统

php - mock & PHPUnit : method does not exist on this mock object

Mysql 查询使用两个日期之间检索记录

MySQL 左连接与具有顺序和限制的右表

php - RedBean 多表连接

PHP 求和来自数组中唯一 id 的其他字段

PHP MYSQL 选择和插入但不起作用