如何限制IP规定时间内发帖次数 请高手指教,如何限制IP规定时间内发帖次数需要用到什么代码?什么函数? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 嘿嘿,php很多东西都是需要自己去扩展实现的!楼上的就不错。我的一个论坛的评论就差不多是这样做的!你需要建一个ip和发布时间的表(ips)在你发帖提交处理页面用$ip=$_SERVER['REMOTE_ADDR'];得到用户的ip然后查一下ips里面相应ip有没有,没有就直接发布,有就把对应的时间查出来($last_time)比如你的限制时间是5分钟,你就可以这样判断if($last_time+300<time()){}else{}当然这是在你存的是秒的情况下!提交成功的时候更新一下ips表,这样应该够清楚了吧? $_SERVER中有IP,你可以在session中记录发帖时间,当下次发帖的时候判断时间是否符合发帖规则就行了 也可以把ip存入xml文件当中,在对比判断,以减少数据库负载 想的太简单了吧,如果通过某个公司内部代理上网,所有员工通过$_SERVER获得的IP都是一样,难道你让人家一个公司的人只能发几条贴吗? 如果我退出再登陆的话session会重新创建 ,这个方法行不通…… 楼主的意思是 ‘限制IP规定时间内发帖次数'所以不考虑相同ip对策。简单的用条件搜索。比如搜索 5分钟内该ip发帖数量,如果有,则不能发。 $ip=get_ip(); //你的获取IP函数$timestep=20; //假设时间隔20秒$dir='iptem'; //手动建立存放IP的文件夹if(file_exists($dir.'/'.$ip)){ if(time()-filemtime($dir.'/'.$ip)<$timestep){ die('发帖间隔请大于'.$timestep.'秒!'); }else{ touch($dir.'/'.$ip); }}else{ touch($dir.'/'.$ip);} $ip=get_ip(); //你的获取IP函数$timestep=20; //假设时间隔20秒$dir='iptem'; //手动建立存放IP的文件夹if(file_exists($dir.'/'.$ip)){ if(time()-filemtime($dir.'/'.$ip)<$timestep){ die('发帖间隔请大于'.$timestep.'秒!'); }else{ touch($dir.'/'.$ip); }}else{ touch($dir.'/'.$ip);}这个可以用于多用户吗? 前面各位已经说得很全面了,我再补充一点:如果你的目标只是“限制IP规定时间内发帖次数”,而不准备对发帖的IP地址、时间做永久的日志记录的话,应该用“基于内存的cache”,而不是数据库,如果一定要用数据库,也应该考虑 NoSQL。————————————————————————————————基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :) 发现一个通达OA视频会议组件源码,PHP代码没有加密,完全公开 [php] 求教 Javascipt 上的 RSA php ftp上传文件 求助php 正则表达式 ecshop后台出现大部分 syntax error, unexpected T_ENDIF in问题 有没有像Js操控HTML中DOM模型的PHP类,推荐一个 推荐一款好用的交友源码 请教大家分享一个好用的PHP报表工具 求大神解答 求ERP或CRM系统权限设置的思路,数据库应该如何设计? 有C语言 数据库 基础 想学PHP 网站开发 share?url= 请问这个文件是什么实现的,有具体代码怎么实现
楼上的就不错。我的一个论坛的评论就差不多是这样做的!
你需要建一个ip和发布时间的表(ips)
在你发帖提交处理页面
用$ip=$_SERVER['REMOTE_ADDR'];得到用户的ip
然后查一下ips里面相应ip有没有,没有就直接发布,有就把对应的时间查出来($last_time)
比如你的限制时间是5分钟,你就可以这样判断if($last_time+300<time()){}else{}当然这是在你存的是秒的情况下!提交成功的时候更新一下ips表,这样应该够清楚了吧?
所以不考虑相同ip对策。
简单的用条件搜索。
比如搜索 5分钟内该ip发帖数量,如果有,则不能发。
$timestep=20; //假设时间隔20秒
$dir='iptem'; //手动建立存放IP的文件夹if(file_exists($dir.'/'.$ip)){
if(time()-filemtime($dir.'/'.$ip)<$timestep){
die('发帖间隔请大于'.$timestep.'秒!');
}else{
touch($dir.'/'.$ip);
}
}else{
touch($dir.'/'.$ip);
}
$timestep=20; //假设时间隔20秒
$dir='iptem'; //手动建立存放IP的文件夹if(file_exists($dir.'/'.$ip)){
if(time()-filemtime($dir.'/'.$ip)<$timestep){
die('发帖间隔请大于'.$timestep.'秒!');
}else{
touch($dir.'/'.$ip);
}
}else{
touch($dir.'/'.$ip);
}
这个可以用于多用户吗?
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)