首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止访问者每天发布2个以上帖子的方法(PHP MySQL)

防止访问者每天发布2个以上帖子的方法(PHP MySQL)
EN

Stack Overflow用户
提问于 2011-04-28 17:58:14
回答 6查看 1.5K关注 0票数 1

我已经找了几个小时来寻找解决方案,要么我找不到合适的词来描述我在搜索引擎中需要什么,要么我只是不善于找到东西。

情况是这样的:我目前正在做一个网站,我有一个部分,访问者可以在那里发布消息,有点像“留言簿”。然而,我想将一个IP地址限制在每天2个帖子。我认为一开始会很简单,只需将ip地址、日期和时间以及所有其他数据插入到mysql表中,然后比较每个IP的时间和日期。诸如此类的事情...然后,当我开始工作的时候,很多问题浮现在我的脑海中。如果IP在一段时间内发布的消息超过2条,我如何比较条目?你怎么开始比较准确的日期和时间呢?用于比较的最佳时间和日期格式是什么?有没有一种更好的方法,比如让数据自动过期,可以与之进行比较?以此类推..如果这看起来像是一项简单的任务,我很抱歉,但我很难找到答案。我试着用谷歌搜索诸如"mysql php时间限制“,"php mysql防止垃圾邮件计时器”,"php mysql计时器如megavideo“等。

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

提前谢谢你!

EN

回答 6

Stack Overflow用户

发布于 2011-04-28 18:10:55

使用structure id, ip, date创建一个名为exceptions的表

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

代码语言:javascript
运行
复制
$ip = $_SERVER['REMOTE_ADDR'];
$query = "insert into exceptions set ip = '{$ip}',date = 'NOW()'";

在让用户发布内容之前,请添加以下内容:

代码语言:javascript
运行
复制
$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; 
}
票数 2
EN

Stack Overflow用户

发布于 2011-04-28 18:03:00

如下所示:

代码语言:javascript
运行
复制
posts_in_last_24_hours = select count(*) from posts where ip=? and date>(NOW()-86400) -- 24 hours ago
if that is 2:
    fail
else:
    post message
票数 1
EN

Stack Overflow用户

发布于 2011-04-28 18:05:05

如果您在数据库中记录了每个帖子的IP,您可以使用一个计算在过去X天内使用该IP的记录数的查询来检查它在过去X天内发布的次数是否超过2次,如下所示:

代码语言:javascript
运行
复制
 SELECT COUNT (IP) FROM posts_log WHERE IP = 'the_user_ip' AND post_date > (NOW() - (X * (60 * 60 * 24)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5816804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档